# HG changeset patch
# User moel.mich
# Date 1286480076 0
# Node ID d93ddd6ca0af53b0816cf0188ab39610879d0886
# Parent  b5b076457b686f00e824ed3b9a858b8a37468493
Added a new sensor type "Level" for wear or charge level (or any other percentage based sensors that don't fit into Load or Control).

diff -r b5b076457b68 -r d93ddd6ca0af GUI/HardwareNode.cs
--- a/GUI/HardwareNode.cs	Wed Oct 06 19:50:10 2010 +0000
+++ b/GUI/HardwareNode.cs	Thu Oct 07 19:34:36 2010 +0000
@@ -64,6 +64,7 @@
       typeNodes.Add(new TypeNode(SensorType.Fan));
       typeNodes.Add(new TypeNode(SensorType.Flow));
       typeNodes.Add(new TypeNode(SensorType.Control));
+      typeNodes.Add(new TypeNode(SensorType.Level));
       
       foreach (ISensor sensor in hardware.Sensors)
         SensorAdded(sensor);
diff -r b5b076457b68 -r d93ddd6ca0af GUI/SensorGadget.cs
--- a/GUI/SensorGadget.cs	Wed Oct 06 19:50:10 2010 +0000
+++ b/GUI/SensorGadget.cs	Thu Oct 07 19:34:36 2010 +0000
@@ -429,7 +429,8 @@
 
 
           if ((sensor.SensorType != SensorType.Load &&
-            sensor.SensorType != SensorType.Control) || !sensor.Value.HasValue) 
+               sensor.SensorType != SensorType.Control &&
+               sensor.SensorType != SensorType.Level) || !sensor.Value.HasValue) 
           {
             string formatted;
 
diff -r b5b076457b68 -r d93ddd6ca0af GUI/SensorNode.cs
--- a/GUI/SensorNode.cs	Wed Oct 06 19:50:10 2010 +0000
+++ b/GUI/SensorNode.cs	Thu Oct 07 19:34:36 2010 +0000
@@ -74,6 +74,7 @@
         case SensorType.Fan: format = "{0:F0} RPM"; break;
         case SensorType.Flow: format = "{0:F0} L/h"; break;
         case SensorType.Control: format = "{0:F1} %"; break;
+        case SensorType.Level: format = "{0:F1} %"; break;
       }
 
       bool hidden = settings.GetValue(new Identifier(sensor.Identifier, 
diff -r b5b076457b68 -r d93ddd6ca0af GUI/SensorNotifyIcon.cs
--- a/GUI/SensorNotifyIcon.cs	Wed Oct 06 19:50:10 2010 +0000
+++ b/GUI/SensorNotifyIcon.cs	Thu Oct 07 19:34:36 2010 +0000
@@ -66,7 +66,10 @@
       this.notifyIcon = new NotifyIcon();
 
       Color defaultColor = Color.Black;
-      if (sensor.SensorType == SensorType.Load) {
+      if (sensor.SensorType == SensorType.Load ||
+          sensor.SensorType == SensorType.Control ||
+          sensor.SensorType == SensorType.Level) 
+      {
         defaultColor = Color.FromArgb(0xff, 0x70, 0x8c, 0xf1);
       }
       Color = settings.GetValue(new Identifier(sensor.Identifier, 
@@ -173,6 +176,8 @@
           return string.Format("{0:F11}", 1e-3f * sensor.Value);
         case SensorType.Control:
           return string.Format("{0:F0}", sensor.Value);
+        case SensorType.Level:
+          return string.Format("{0:F0}", sensor.Value);
       }
       return "-";
     }
@@ -209,7 +214,7 @@
       return IconFactory.Create(bytes, 16, 16, PixelFormat.Format32bppArgb);
     }
 
-    private Icon CreateLoadIcon() {      
+    private Icon CreatePercentageIcon() {      
       try {
         graphics.Clear(Color.Transparent);
       } catch (ArgumentException) {
@@ -233,11 +238,17 @@
     public void Update() {
       Icon icon = notifyIcon.Icon;
 
-      if (sensor.SensorType == SensorType.Load) {
-        notifyIcon.Icon = CreateLoadIcon();
-      } else {
-        notifyIcon.Icon = CreateTransparentIcon();
+      switch (sensor.SensorType) {
+        case SensorType.Load:
+        case SensorType.Control:
+        case SensorType.Level:
+          notifyIcon.Icon = CreatePercentageIcon();
+          break;
+        default:
+          notifyIcon.Icon = CreateTransparentIcon();
+          break;
       }
+
       if (icon != null) 
         icon.Dispose();
 
@@ -250,6 +261,7 @@
         case SensorType.Fan: format = "\n{0}: {1:F0} RPM"; break;
         case SensorType.Flow: format = "\n{0}: {1:F0} L/h"; break;
         case SensorType.Control: format = "\n{0}: {1:F1} %"; break;
+        case SensorType.Level: format = "\n{0}: {1:F1} %"; break;
       }
       string formattedValue = string.Format(format, sensor.Name, sensor.Value);
       string hardwareName = sensor.Hardware.Name;
diff -r b5b076457b68 -r d93ddd6ca0af GUI/TypeNode.cs
--- a/GUI/TypeNode.cs	Wed Oct 06 19:50:10 2010 +0000
+++ b/GUI/TypeNode.cs	Thu Oct 07 19:34:36 2010 +0000
@@ -76,6 +76,10 @@
           this.Image = Utilities.EmbeddedResources.GetImage("control.png");
           this.Text = "Controls";
           break;
+        case SensorType.Level:
+          this.Image = Utilities.EmbeddedResources.GetImage("level.png");
+          this.Text = "Levels";
+          break;
       }
 
       NodeAdded += new NodeEventHandler(TypeNode_NodeAdded);
diff -r b5b076457b68 -r d93ddd6ca0af Hardware/ISensor.cs
--- a/Hardware/ISensor.cs	Wed Oct 06 19:50:10 2010 +0000
+++ b/Hardware/ISensor.cs	Thu Oct 07 19:34:36 2010 +0000
@@ -48,7 +48,8 @@
     Load,
     Fan,
     Flow,
-    Control
+    Control,
+    Level
   }
 
   public struct SensorValue {
diff -r b5b076457b68 -r d93ddd6ca0af OpenHardwareMonitor.csproj
--- a/OpenHardwareMonitor.csproj	Wed Oct 06 19:50:10 2010 +0000
+++ b/OpenHardwareMonitor.csproj	Thu Oct 07 19:34:36 2010 +0000
@@ -205,6 +205,9 @@
     <EmbeddedResource Include="Resources\barblue.png" />
     <EmbeddedResource Include="Resources\gadget.png" />
   </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Resources\level.png" />
+  </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
   <ProjectExtensions>
     <VisualStudio AllowExistingFolder="true" />
diff -r b5b076457b68 -r d93ddd6ca0af Resources/level.png
Binary file Resources/level.png has changed