Adding SoundGraphDisplay and SensorFrontView classes.
They were respectively based on SystemTray and SensorNotifyIcon.
SoundGraphDisplay is now able to load iMONDisplay.dll providing it lives on your PATH.
Adding option to sensor context menu for adding it into FrontView.
3 This Source Code Form is subject to the terms of the Mozilla Public
4 License, v. 2.0. If a copy of the MPL was not distributed with this
5 file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 Copyright (C) 2009-2011 Michael Möller <mmoeller@openhardwaremonitor.org>
12 using OpenHardwareMonitor.Collections;
14 namespace OpenHardwareMonitor.Hardware {
15 internal abstract class Hardware : IHardware {
17 private readonly Identifier identifier;
18 protected readonly string name;
19 private string customName;
20 protected readonly ISettings settings;
21 protected readonly ListSet<ISensor> active = new ListSet<ISensor>();
23 public Hardware(string name, Identifier identifier, ISettings settings) {
24 this.settings = settings;
25 this.identifier = identifier;
27 this.customName = settings.GetValue(
28 new Identifier(Identifier, "name").ToString(), name);
31 public IHardware[] SubHardware {
32 get { return new IHardware[0]; }
35 public virtual IHardware Parent {
39 public virtual ISensor[] Sensors {
40 get { return active.ToArray(); }
43 protected virtual void ActivateSensor(ISensor sensor) {
44 if (active.Add(sensor))
45 if (SensorAdded != null)
49 protected virtual void DeactivateSensor(ISensor sensor) {
50 if (active.Remove(sensor))
51 if (SensorRemoved != null)
52 SensorRemoved(sensor);
60 if (!string.IsNullOrEmpty(value))
64 settings.SetValue(new Identifier(Identifier, "name").ToString(),
69 public Identifier Identifier {
75 #pragma warning disable 67
76 public event SensorEventHandler SensorAdded;
77 public event SensorEventHandler SensorRemoved;
78 #pragma warning restore 67
81 public abstract HardwareType HardwareType { get; }
83 public virtual string GetReport() {
87 public abstract void Update();
89 public event HardwareEventHandler Closing;
91 public virtual void Close() {
96 public void Accept(IVisitor visitor) {
98 throw new ArgumentNullException("visitor");
99 visitor.VisitHardware(this);
102 public virtual void Traverse(IVisitor visitor) {
103 foreach (ISensor sensor in active)
104 sensor.Accept(visitor);