2010-01-26 22:37:48 +00:00
|
|
|
|
/*
|
|
|
|
|
|
2012-05-27 14:23:31 +00:00
|
|
|
|
This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
|
License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
|
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
2010-01-26 22:37:48 +00:00
|
|
|
|
|
2016-11-06 14:51:24 +01:00
|
|
|
|
Copyright (C) 2009-2016 Michael Möller <mmoeller@openhardwaremonitor.org>
|
2012-05-27 14:23:31 +00:00
|
|
|
|
|
2010-01-26 22:37:48 +00:00
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
using System;
|
2016-07-13 21:17:01 +03:00
|
|
|
|
using System.Drawing;
|
2010-01-26 22:37:48 +00:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using OpenHardwareMonitor.Hardware;
|
2010-05-14 22:30:06 +00:00
|
|
|
|
using OpenHardwareMonitor.Utilities;
|
2010-01-26 22:37:48 +00:00
|
|
|
|
|
|
|
|
|
namespace OpenHardwareMonitor.GUI {
|
|
|
|
|
public class SensorNode : Node {
|
|
|
|
|
|
|
|
|
|
private ISensor sensor;
|
2010-08-08 13:57:26 +00:00
|
|
|
|
private PersistentSettings settings;
|
|
|
|
|
private UnitManager unitManager;
|
2010-01-26 22:37:48 +00:00
|
|
|
|
private string format;
|
2016-07-13 21:17:01 +03:00
|
|
|
|
private bool plot = false;
|
2016-11-06 14:51:24 +01:00
|
|
|
|
private Color? penColor = null;
|
2010-01-26 22:37:48 +00:00
|
|
|
|
|
|
|
|
|
public string ValueToString(float? value) {
|
2010-05-20 21:23:54 +00:00
|
|
|
|
if (value.HasValue) {
|
|
|
|
|
if (sensor.SensorType == SensorType.Temperature &&
|
2010-08-08 13:57:26 +00:00
|
|
|
|
unitManager.TemperatureUnit == TemperatureUnit.Fahrenheit) {
|
2010-05-20 21:23:54 +00:00
|
|
|
|
return string.Format("{0:F1} °F", value * 1.8 + 32);
|
|
|
|
|
} else {
|
|
|
|
|
return string.Format(format, value);
|
|
|
|
|
}
|
|
|
|
|
} else
|
2010-01-26 22:37:48 +00:00
|
|
|
|
return "-";
|
|
|
|
|
}
|
|
|
|
|
|
2010-08-08 13:57:26 +00:00
|
|
|
|
public SensorNode(ISensor sensor, PersistentSettings settings,
|
|
|
|
|
UnitManager unitManager) : base() {
|
2010-01-26 22:37:48 +00:00
|
|
|
|
this.sensor = sensor;
|
2010-08-08 13:57:26 +00:00
|
|
|
|
this.settings = settings;
|
|
|
|
|
this.unitManager = unitManager;
|
2010-01-26 22:37:48 +00:00
|
|
|
|
switch (sensor.SensorType) {
|
2011-05-15 20:48:52 +00:00
|
|
|
|
case SensorType.Voltage: format = "{0:F3} V"; break;
|
2010-01-26 22:37:48 +00:00
|
|
|
|
case SensorType.Clock: format = "{0:F0} MHz"; break;
|
2010-02-03 20:35:10 +00:00
|
|
|
|
case SensorType.Load: format = "{0:F1} %"; break;
|
2010-01-26 22:37:48 +00:00
|
|
|
|
case SensorType.Temperature: format = "{0:F1} °C"; break;
|
|
|
|
|
case SensorType.Fan: format = "{0:F0} RPM"; break;
|
2010-02-21 18:10:30 +00:00
|
|
|
|
case SensorType.Flow: format = "{0:F0} L/h"; break;
|
2010-05-15 14:16:00 +00:00
|
|
|
|
case SensorType.Control: format = "{0:F1} %"; break;
|
2010-10-07 19:34:36 +00:00
|
|
|
|
case SensorType.Level: format = "{0:F1} %"; break;
|
2011-07-27 18:27:16 +00:00
|
|
|
|
case SensorType.Power: format = "{0:F1} W"; break;
|
2011-12-31 17:31:04 +00:00
|
|
|
|
case SensorType.Data: format = "{0:F1} GB"; break;
|
2016-04-28 19:57:12 +02:00
|
|
|
|
case SensorType.SmallData: format = "{0:F1} MB"; break;
|
2012-02-14 23:07:55 +00:00
|
|
|
|
case SensorType.Factor: format = "{0:F3}"; break;
|
2010-05-14 22:30:06 +00:00
|
|
|
|
}
|
|
|
|
|
|
2010-08-12 20:53:27 +00:00
|
|
|
|
bool hidden = settings.GetValue(new Identifier(sensor.Identifier,
|
2010-05-14 22:30:06 +00:00
|
|
|
|
"hidden").ToString(), sensor.IsDefaultHidden);
|
2010-05-24 15:27:46 +00:00
|
|
|
|
base.IsVisible = !hidden;
|
2012-01-01 17:12:34 +00:00
|
|
|
|
|
|
|
|
|
this.Plot = settings.GetValue(new Identifier(sensor.Identifier,
|
|
|
|
|
"plot").ToString(), false);
|
2016-11-06 14:51:24 +01:00
|
|
|
|
|
|
|
|
|
string id = new Identifier(sensor.Identifier, "penColor").ToString();
|
|
|
|
|
if (settings.Contains(id))
|
|
|
|
|
this.PenColor = settings.GetValue(id, Color.Black);
|
2010-01-26 22:37:48 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override string Text {
|
|
|
|
|
get { return sensor.Name; }
|
|
|
|
|
set { sensor.Name = value; }
|
2010-05-14 22:30:06 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override bool IsVisible {
|
|
|
|
|
get { return base.IsVisible; }
|
|
|
|
|
set {
|
|
|
|
|
base.IsVisible = value;
|
2010-08-12 20:53:27 +00:00
|
|
|
|
settings.SetValue(new Identifier(sensor.Identifier,
|
2010-05-14 22:30:06 +00:00
|
|
|
|
"hidden").ToString(), !value);
|
2016-11-06 14:51:24 +01:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Color? PenColor {
|
|
|
|
|
get { return penColor; }
|
|
|
|
|
set {
|
|
|
|
|
penColor = value;
|
|
|
|
|
|
|
|
|
|
string id = new Identifier(sensor.Identifier, "penColor").ToString();
|
|
|
|
|
if (value.HasValue)
|
|
|
|
|
settings.SetValue(id, value.Value);
|
|
|
|
|
else
|
|
|
|
|
settings.Remove(id);
|
|
|
|
|
|
|
|
|
|
if (PlotSelectionChanged != null)
|
|
|
|
|
PlotSelectionChanged(this, null);
|
2010-05-14 22:30:06 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
2010-01-26 22:37:48 +00:00
|
|
|
|
|
|
|
|
|
public bool Plot {
|
|
|
|
|
get { return plot; }
|
2012-01-01 17:12:34 +00:00
|
|
|
|
set {
|
|
|
|
|
plot = value;
|
|
|
|
|
settings.SetValue(new Identifier(sensor.Identifier, "plot").ToString(),
|
|
|
|
|
value);
|
|
|
|
|
if (PlotSelectionChanged != null)
|
|
|
|
|
PlotSelectionChanged(this, null);
|
|
|
|
|
}
|
2010-01-26 22:37:48 +00:00
|
|
|
|
}
|
|
|
|
|
|
2012-01-01 17:12:34 +00:00
|
|
|
|
public event EventHandler PlotSelectionChanged;
|
|
|
|
|
|
2010-01-26 22:37:48 +00:00
|
|
|
|
public ISensor Sensor {
|
|
|
|
|
get { return sensor; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string Value {
|
|
|
|
|
get { return ValueToString(sensor.Value); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string Min {
|
|
|
|
|
get { return ValueToString(sensor.Min); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string Max {
|
|
|
|
|
get { return ValueToString(sensor.Max); }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override bool Equals(System.Object obj) {
|
|
|
|
|
if (obj == null)
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
SensorNode s = obj as SensorNode;
|
|
|
|
|
if (s == null)
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
return (sensor == s.sensor);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override int GetHashCode() {
|
|
|
|
|
return sensor.GetHashCode();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|