GUI/SensorNode.cs
author StephaneLenclud
Thu, 18 Apr 2013 23:25:10 +0200
branchMiniDisplay
changeset 444 9b09e2ee0968
parent 340 600962f8a298
permissions -rw-r--r--
Front View plug-in does not init if no sensor added.
Fixing some format to make strings shorter.
Now trying to start SoundGraphAccess.exe process from same directory.
Packed mode now can display three sensors along with the current time.
     1 /*
     2  
     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/.
     6  
     7   Copyright (C) 2009-2012 Michael Möller <mmoeller@openhardwaremonitor.org>
     8 	
     9 */
    10 
    11 using System;
    12 using System.Collections.Generic;
    13 using OpenHardwareMonitor.Hardware;
    14 using OpenHardwareMonitor.Utilities;
    15 
    16 namespace OpenHardwareMonitor.GUI {
    17   public class SensorNode : Node {
    18     
    19     private ISensor sensor;
    20     private PersistentSettings settings;
    21     private UnitManager unitManager;
    22     private string format;
    23     private bool plot = false;       
    24 
    25     public string ValueToString(float? value) {
    26       if (value.HasValue) {
    27         if (sensor.SensorType == SensorType.Temperature && 
    28           unitManager.TemperatureUnit == TemperatureUnit.Fahrenheit) {
    29           return string.Format("{0:F1} °F", value * 1.8 + 32);
    30         } else {
    31           return string.Format(format, value);
    32         }                
    33       } else
    34         return "-";
    35     }
    36 
    37     public SensorNode(ISensor sensor, PersistentSettings settings, 
    38       UnitManager unitManager) : base() {      
    39       this.sensor = sensor;
    40       this.settings = settings;
    41       this.unitManager = unitManager;
    42       switch (sensor.SensorType) {
    43         case SensorType.Voltage: format = "{0:F3} V"; break;
    44         case SensorType.Clock: format = "{0:F0} MHz"; break;
    45         case SensorType.Load: format = "{0:F1} %"; break;
    46         case SensorType.Temperature: format = "{0:F1} °C"; break;
    47         case SensorType.Fan: format = "{0:F0} RPM"; break;
    48         case SensorType.Flow: format = "{0:F0} L/h"; break;
    49         case SensorType.Control: format = "{0:F1} %"; break;
    50         case SensorType.Level: format = "{0:F1} %"; break;
    51         case SensorType.Power: format = "{0:F1} W"; break;
    52         case SensorType.Data: format = "{0:F1} GB"; break;
    53         case SensorType.Factor: format = "{0:F3}"; break;
    54       }
    55 
    56       bool hidden = settings.GetValue(new Identifier(sensor.Identifier, 
    57         "hidden").ToString(), sensor.IsDefaultHidden);
    58       base.IsVisible = !hidden;
    59 
    60       this.Plot = settings.GetValue(new Identifier(sensor.Identifier, 
    61         "plot").ToString(), false);
    62     }
    63 
    64     public override string Text {
    65       get { return sensor.Name; }
    66       set { sensor.Name = value; }
    67     }
    68 
    69     public override bool IsVisible {
    70       get { return base.IsVisible; }
    71       set { 
    72         base.IsVisible = value;
    73         settings.SetValue(new Identifier(sensor.Identifier,
    74           "hidden").ToString(), !value);
    75       }
    76     }
    77 
    78     public bool Plot {
    79       get { return plot; }
    80       set { 
    81         plot = value;
    82         settings.SetValue(new Identifier(sensor.Identifier, "plot").ToString(), 
    83           value);
    84         if (PlotSelectionChanged != null)
    85           PlotSelectionChanged(this, null);
    86       }
    87     }
    88 
    89     public event EventHandler PlotSelectionChanged;
    90 
    91     public ISensor Sensor {
    92       get { return sensor; }
    93     }
    94 
    95     public string Value {
    96       get { return ValueToString(sensor.Value); }
    97     }
    98 
    99     public string Min {
   100       get { return ValueToString(sensor.Min); }
   101     }
   102 
   103     public string Max {
   104       get { return ValueToString(sensor.Max); }
   105     }
   106 
   107     public override bool Equals(System.Object obj) {
   108       if (obj == null) 
   109         return false;
   110 
   111       SensorNode s = obj as SensorNode;
   112       if (s == null) 
   113         return false;
   114 
   115       return (sensor == s.sensor);
   116     }
   117 
   118     public override int GetHashCode() {
   119       return sensor.GetHashCode();
   120     }
   121 
   122   }
   123 }