aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/TechItems/MeterItem.cs
blob: 1eb5469d7f5d788eec685555a4fa4e8242582c19 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls.Primitives;
using System.Windows.Media;
using System.Xml.Serialization;
using Tango.BL.Entities;
using Tango.SharedUI.Helpers;

namespace Tango.MachineStudio.Technician.TechItems
{
    /// <summary>
    /// Represents an analog style VU meter item.
    /// </summary>
    /// <seealso cref="Tango.MachineStudio.Technician.TechItems.TechItem" />
    [TechItem(3)]
    public class MeterItem : TechItem
    {
        private TechMonitor _techMonitor;
        /// <summary>
        /// Gets or sets the db tech monitor.
        /// </summary>
        [XmlIgnore]
        public TechMonitor TechMonitor
        {
            get { return _techMonitor; }
            set { _techMonitor = value; RaisePropertyChangedAuto(); TechName = _techMonitor != null ? _techMonitor.Description : null; ItemGuid = value != null ? value.Guid : null; }
        }

        private double _value;
        /// <summary>
        /// Gets or sets the current value.
        /// </summary>
        [XmlIgnore]
        public double Value
        {
            get { return _value; }
            set { _value = value; RaisePropertyChanged(nameof(Value)); LastUpdateTime = DateTime.Now; }
        }

        private int _updateInterval;
        /// <summary>
        /// Gets or sets the minimum update interval.
        /// </summary>
        public int UpdateInterval
        {
            get { return _updateInterval; }
            set { _updateInterval = value; RaisePropertyChangedAuto(); }
        }

        private int _ledCount;
        /// <summary>
        /// Gets or sets the amount of LED's.
        /// </summary>
        public int LedCount
        {
            get { return _ledCount; }
            set { _ledCount = value; RaisePropertyChangedAuto(); }
        }

        private int _ticksCount;
        /// <summary>
        /// Gets or sets the amount of meter ticks.
        /// </summary>
        public int TicksCount
        {
            get { return _ticksCount; }
            set { _ticksCount = value; RaisePropertyChangedAuto(); }
        }

        private TickPlacement _tickPlacement;
        /// <summary>
        /// Gets or sets the ticks placement.
        /// </summary>
        public TickPlacement TickPlacement
        {
            get { return _tickPlacement; }
            set { _tickPlacement = value; RaisePropertyChangedAuto(); }
        }

        /// <summary>
        /// Gets or sets the last update time.
        /// </summary>
        [XmlIgnore]
        public DateTime LastUpdateTime { get; set; }

        /// <summary>
        /// Initializes a new instance of the <see cref="MeterItem"/> class.
        /// </summary>
        public MeterItem() : base()
        {
            Name = "VU Monitor";
            Description = "VU Meter monitor";
            Image = ResourceHelper.GetImageFromResources("Images/volume.png");
            LastUpdateTime = DateTime.Now;
            UpdateInterval = 10;
            LedCount = 14;
            TicksCount = 14;
            TickPlacement = TickPlacement.BottomRight;
            Color = Colors.DimGray;
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="MeterItem"/> class.
        /// </summary>
        /// <param name="techMonitor">The db tech monitor.</param>
        public MeterItem(TechMonitor techMonitor) : this()
        {
            TechMonitor = techMonitor;
        }

        /// <summary>
        /// Clones this instance.
        /// </summary>
        /// <returns></returns>
        public override TechItem Clone()
        {
            MeterItem cloned = base.Clone() as MeterItem;
            cloned.TechMonitor = TechMonitor;
            cloned.UpdateInterval = UpdateInterval;
            cloned.LedCount = LedCount;
            cloned.TicksCount = TicksCount;
            return cloned;
        }
    }
}