| moel@1 |      1 | /*
 | 
| moel@1 |      2 |   
 | 
| moel@1 |      3 |   Version: MPL 1.1/GPL 2.0/LGPL 2.1
 | 
| moel@1 |      4 | 
 | 
| moel@1 |      5 |   The contents of this file are subject to the Mozilla Public License Version
 | 
| moel@1 |      6 |   1.1 (the "License"); you may not use this file except in compliance with
 | 
| moel@1 |      7 |   the License. You may obtain a copy of the License at
 | 
| moel@1 |      8 |  
 | 
| moel@1 |      9 |   http://www.mozilla.org/MPL/
 | 
| moel@1 |     10 | 
 | 
| moel@1 |     11 |   Software distributed under the License is distributed on an "AS IS" basis,
 | 
| moel@1 |     12 |   WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 | 
| moel@1 |     13 |   for the specific language governing rights and limitations under the License.
 | 
| moel@1 |     14 | 
 | 
| moel@1 |     15 |   The Original Code is the Open Hardware Monitor code.
 | 
| moel@1 |     16 | 
 | 
| moel@1 |     17 |   The Initial Developer of the Original Code is 
 | 
| moel@1 |     18 |   Michael Möller <m.moeller@gmx.ch>.
 | 
| moel@1 |     19 |   Portions created by the Initial Developer are Copyright (C) 2009-2010
 | 
| moel@1 |     20 |   the Initial Developer. All Rights Reserved.
 | 
| moel@1 |     21 | 
 | 
| moel@1 |     22 |   Contributor(s):
 | 
| moel@1 |     23 | 
 | 
| moel@1 |     24 |   Alternatively, the contents of this file may be used under the terms of
 | 
| moel@1 |     25 |   either the GNU General Public License Version 2 or later (the "GPL"), or
 | 
| moel@1 |     26 |   the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 | 
| moel@1 |     27 |   in which case the provisions of the GPL or the LGPL are applicable instead
 | 
| moel@1 |     28 |   of those above. If you wish to allow use of your version of this file only
 | 
| moel@1 |     29 |   under the terms of either the GPL or the LGPL, and not to allow others to
 | 
| moel@1 |     30 |   use your version of this file under the terms of the MPL, indicate your
 | 
| moel@1 |     31 |   decision by deleting the provisions above and replace them with the notice
 | 
| moel@1 |     32 |   and other provisions required by the GPL or the LGPL. If you do not delete
 | 
| moel@1 |     33 |   the provisions above, a recipient may use your version of this file under
 | 
| moel@1 |     34 |   the terms of any one of the MPL, the GPL or the LGPL.
 | 
| moel@1 |     35 |  
 | 
| moel@1 |     36 | */
 | 
| moel@1 |     37 | 
 | 
| moel@1 |     38 | using System;
 | 
| moel@1 |     39 | using System.Collections.Generic;
 | 
| moel@1 |     40 | using Aga.Controls.Tree;
 | 
| moel@1 |     41 | using OpenHardwareMonitor.Hardware;
 | 
| moel@1 |     42 | 
 | 
| moel@1 |     43 | namespace OpenHardwareMonitor.GUI {
 | 
| moel@1 |     44 |   public class SensorNode : Node {
 | 
| moel@1 |     45 |     
 | 
| moel@1 |     46 |     private ISensor sensor;
 | 
| moel@1 |     47 |     private string format;
 | 
| moel@1 |     48 |     private bool plot = false;
 | 
| moel@1 |     49 | 
 | 
| moel@1 |     50 |     public string ValueToString(float? value) {
 | 
| moel@1 |     51 |       if (value.HasValue)
 | 
| moel@1 |     52 |         return string.Format(format, value);
 | 
| moel@1 |     53 |       else
 | 
| moel@1 |     54 |         return "-";
 | 
| moel@1 |     55 |     }
 | 
| moel@1 |     56 | 
 | 
| moel@1 |     57 |     public SensorNode(ISensor sensor) {
 | 
| moel@1 |     58 |       this.sensor = sensor;
 | 
| moel@1 |     59 |       switch (sensor.SensorType) {
 | 
| moel@1 |     60 |         case SensorType.Voltage: format = "{0:F2} V"; break;
 | 
| moel@1 |     61 |         case SensorType.Clock: format = "{0:F0} MHz"; break;
 | 
| moel@24 |     62 |         case SensorType.Load: format = "{0:F1} %"; break;
 | 
| moel@1 |     63 |         case SensorType.Temperature: format = "{0:F1} °C"; break;
 | 
| moel@1 |     64 |         case SensorType.Fan: format = "{0:F0} RPM"; break;
 | 
| moel@1 |     65 |       }      
 | 
| moel@1 |     66 |     }
 | 
| moel@1 |     67 | 
 | 
| moel@1 |     68 |     public override string Text {
 | 
| moel@1 |     69 |       get { return sensor.Name; }
 | 
| moel@1 |     70 |       set { sensor.Name = value; }
 | 
| moel@1 |     71 |     }    
 | 
| moel@1 |     72 | 
 | 
| moel@1 |     73 |     public bool Plot {
 | 
| moel@1 |     74 |       get { return plot; }
 | 
| moel@1 |     75 |       set { plot = value; }
 | 
| moel@1 |     76 |     }
 | 
| moel@1 |     77 | 
 | 
| moel@1 |     78 |     public ISensor Sensor {
 | 
| moel@1 |     79 |       get { return sensor; }
 | 
| moel@1 |     80 |     }
 | 
| moel@1 |     81 | 
 | 
| moel@1 |     82 |     public string Value {
 | 
| moel@1 |     83 |       get { return ValueToString(sensor.Value); }
 | 
| moel@1 |     84 |     }
 | 
| moel@1 |     85 | 
 | 
| moel@1 |     86 |     public string Min {
 | 
| moel@1 |     87 |       get { return ValueToString(sensor.Min); }
 | 
| moel@1 |     88 |     }
 | 
| moel@1 |     89 | 
 | 
| moel@1 |     90 |     public string Max {
 | 
| moel@1 |     91 |       get { return ValueToString(sensor.Max); }
 | 
| moel@1 |     92 |     }
 | 
| moel@1 |     93 | 
 | 
| moel@1 |     94 |     public String Limit {
 | 
| moel@1 |     95 |       get {
 | 
| moel@1 |     96 |         return sensor.Limit.ToString();
 | 
| moel@1 |     97 |       }
 | 
| moel@1 |     98 |       set {
 | 
| moel@1 |     99 |         if (value != "")
 | 
| moel@1 |    100 |           sensor.Limit = float.Parse(value);
 | 
| moel@1 |    101 |         else
 | 
| moel@1 |    102 |           sensor.Limit = null;
 | 
| moel@1 |    103 |       }
 | 
| moel@1 |    104 |     }
 | 
| moel@1 |    105 | 
 | 
| moel@1 |    106 |     public override bool Equals(System.Object obj) {
 | 
| moel@1 |    107 |       if (obj == null) 
 | 
| moel@1 |    108 |         return false;
 | 
| moel@1 |    109 | 
 | 
| moel@1 |    110 |       SensorNode s = obj as SensorNode;
 | 
| moel@1 |    111 |       if (s == null) 
 | 
| moel@1 |    112 |         return false;
 | 
| moel@1 |    113 | 
 | 
| moel@1 |    114 |       return (sensor == s.sensor);
 | 
| moel@1 |    115 |     }
 | 
| moel@1 |    116 | 
 | 
| moel@1 |    117 |     public override int GetHashCode() {
 | 
| moel@1 |    118 |       return sensor.GetHashCode();
 | 
| moel@1 |    119 |     }
 | 
| moel@1 |    120 | 
 | 
| moel@1 |    121 |   }
 | 
| moel@1 |    122 | }
 |