# HG changeset patch
# User paulwerelds
# Date 1287253460 0
# Node ID 04dbd92d111630f4cf75a9c3f4f21fe8c37bc962
# Parent be9534663a55d037e3faa40fb9e56873b0de6ef6
More refactoring.
diff -r be9534663a55 -r 04dbd92d1116 GUI/MainForm.cs
--- a/GUI/MainForm.cs Sat Oct 16 14:15:41 2010 +0000
+++ b/GUI/MainForm.cs Sat Oct 16 18:24:20 2010 +0000
@@ -44,7 +44,7 @@
using Aga.Controls.Tree;
using Aga.Controls.Tree.NodeControls;
using OpenHardwareMonitor.Hardware;
-using OpenHardwareMonitor.WMIProvider;
+using OpenHardwareMonitor.Wmi;
namespace OpenHardwareMonitor.GUI {
public partial class MainForm : Form {
diff -r be9534663a55 -r 04dbd92d1116 OpenHardwareMonitor.csproj
--- a/OpenHardwareMonitor.csproj Sat Oct 16 14:15:41 2010 +0000
+++ b/OpenHardwareMonitor.csproj Sat Oct 16 18:24:20 2010 +0000
@@ -128,10 +128,10 @@
-
-
-
-
+
+
+
+
Component
diff -r be9534663a55 -r 04dbd92d1116 WMIProvider/WMIProvider.cs
--- a/WMIProvider/WMIProvider.cs Sat Oct 16 14:15:41 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +0,0 @@
-/*
-
- Version: MPL 1.1/GPL 2.0/LGPL 2.1
-
- The contents of this file are subject to the Mozilla Public License Version
- 1.1 (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS" basis,
- WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- for the specific language governing rights and limitations under the License.
-
- The Original Code is the Open Hardware Monitor code.
-
- The Initial Developer of the Original Code is
- Paul Werelds .
- Portions created by the Initial Developer are Copyright (C) 2009-2010
- the Initial Developer. All Rights Reserved.
-
- Contributor(s):
-
- Alternatively, the contents of this file may be used under the terms of
- either the GNU General Public License Version 2 or later (the "GPL"), or
- the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- in which case the provisions of the GPL or the LGPL are applicable instead
- of those above. If you wish to allow use of your version of this file only
- under the terms of either the GPL or the LGPL, and not to allow others to
- use your version of this file under the terms of the MPL, indicate your
- decision by deleting the provisions above and replace them with the notice
- and other provisions required by the GPL or the LGPL. If you do not delete
- the provisions above, a recipient may use your version of this file under
- the terms of any one of the MPL, the GPL or the LGPL.
-
-*/
-
-using System;
-using System.Collections.Generic;
-using System.Management.Instrumentation;
-using OpenHardwareMonitor.Hardware;
-
-[assembly: Instrumented("root/OpenHardwareMonitor")]
-
-[System.ComponentModel.RunInstaller(true)]
-public class InstanceInstaller : DefaultManagementProjectInstaller { }
-
-namespace OpenHardwareMonitor.WMIProvider {
- ///
- /// The WMI Provider.
- /// This class is not exposed to WMI itself.
- ///
- public class WmiProvider : IDisposable {
- private List _activeInstances;
-
- public WmiProvider(IComputer computer) {
- _activeInstances = new List();
-
- foreach (IHardware hardware in computer.Hardware)
- ComputerHardwareAdded(hardware);
-
- computer.HardwareAdded += ComputerHardwareAdded;
- computer.HardwareRemoved += ComputerHardwareRemoved;
- }
-
- public void Update() {
- foreach (IWmiObject instance in _activeInstances)
- instance.Update();
- }
-
- #region Eventhandlers
-
- private void ComputerHardwareAdded(IHardware hardware) {
- if (!Exists(hardware.Identifier.ToString())) {
- foreach (ISensor sensor in hardware.Sensors)
- HardwareSensorAdded(sensor);
-
- hardware.SensorAdded += HardwareSensorAdded;
- hardware.SensorRemoved += HardwareSensorRemoved;
-
- Hardware hw = new Hardware(hardware);
- _activeInstances.Add(hw);
-
- Instrumentation.Publish(hw);
- }
-
- foreach (IHardware subHardware in hardware.SubHardware)
- ComputerHardwareAdded(subHardware);
- }
-
- private void HardwareSensorAdded(ISensor data) {
- Sensor sensor = new Sensor(data);
- _activeInstances.Add(sensor);
-
- Instrumentation.Publish(sensor);
- }
-
- private void ComputerHardwareRemoved(IHardware hardware) {
- hardware.SensorAdded -= HardwareSensorAdded;
- hardware.SensorRemoved -= HardwareSensorRemoved;
-
- foreach (ISensor sensor in hardware.Sensors)
- HardwareSensorRemoved(sensor);
-
- foreach (IHardware subHardware in hardware.SubHardware)
- ComputerHardwareRemoved(subHardware);
-
- RevokeInstance(hardware.Identifier.ToString());
- }
-
- private void HardwareSensorRemoved(ISensor sensor) {
- RevokeInstance(sensor.Identifier.ToString());
- }
-
- #endregion
-
- #region Helpers
-
- private bool Exists(string identifier) {
- return _activeInstances.Exists(h => h.Identifier == identifier);
- }
-
- private void RevokeInstance(string identifier) {
- int instanceIndex = _activeInstances.FindIndex(
- item => item.Identifier == identifier.ToString()
- );
-
- Instrumentation.Revoke(_activeInstances[instanceIndex]);
-
- _activeInstances.RemoveAt(instanceIndex);
- }
-
- #endregion
-
- public void Dispose() {
- foreach (IWmiObject instance in _activeInstances)
- Instrumentation.Revoke(instance);
- _activeInstances = null;
- }
- }
-}
diff -r be9534663a55 -r 04dbd92d1116 Wmi/Hardware.cs
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Wmi/Hardware.cs Sat Oct 16 18:24:20 2010 +0000
@@ -0,0 +1,60 @@
+/*
+
+ Version: MPL 1.1/GPL 2.0/LGPL 2.1
+
+ The contents of this file are subject to the Mozilla Public License Version
+ 1.1 (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.mozilla.org/MPL/
+
+ Software distributed under the License is distributed on an "AS IS" basis,
+ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ for the specific language governing rights and limitations under the License.
+
+ The Original Code is the Open Hardware Monitor code.
+
+ The Initial Developer of the Original Code is
+ Paul Werelds .
+ Portions created by the Initial Developer are Copyright (C) 2009-2010
+ the Initial Developer. All Rights Reserved.
+
+ Contributor(s):
+
+ Alternatively, the contents of this file may be used under the terms of
+ either the GNU General Public License Version 2 or later (the "GPL"), or
+ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ in which case the provisions of the GPL or the LGPL are applicable instead
+ of those above. If you wish to allow use of your version of this file only
+ under the terms of either the GPL or the LGPL, and not to allow others to
+ use your version of this file under the terms of the MPL, indicate your
+ decision by deleting the provisions above and replace them with the notice
+ and other provisions required by the GPL or the LGPL. If you do not delete
+ the provisions above, a recipient may use your version of this file under
+ the terms of any one of the MPL, the GPL or the LGPL.
+
+*/
+
+using System.Management.Instrumentation;
+using OpenHardwareMonitor.Hardware;
+
+namespace OpenHardwareMonitor.Wmi {
+ [InstrumentationClass(InstrumentationType.Instance)]
+ public class Hardware : IWmiObject {
+ #region WMI Exposed
+
+ public string HardwareType { get; private set; }
+ public string Identifier { get; private set; }
+ public string Name { get; private set; }
+
+ #endregion
+
+ public Hardware(IHardware hardware) {
+ Name = hardware.Name;
+ Identifier = hardware.Identifier.ToString();
+ HardwareType = hardware.HardwareType.ToString();
+ }
+
+ public void Update() { }
+ }
+}
diff -r be9534663a55 -r 04dbd92d1116 Wmi/IWmiObject.cs
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Wmi/IWmiObject.cs Sat Oct 16 18:24:20 2010 +0000
@@ -0,0 +1,47 @@
+/*
+
+ Version: MPL 1.1/GPL 2.0/LGPL 2.1
+
+ The contents of this file are subject to the Mozilla Public License Version
+ 1.1 (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.mozilla.org/MPL/
+
+ Software distributed under the License is distributed on an "AS IS" basis,
+ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ for the specific language governing rights and limitations under the License.
+
+ The Original Code is the Open Hardware Monitor code.
+
+ The Initial Developer of the Original Code is
+ Paul Werelds .
+ Portions created by the Initial Developer are Copyright (C) 2009-2010
+ the Initial Developer. All Rights Reserved.
+
+ Contributor(s):
+
+ Alternatively, the contents of this file may be used under the terms of
+ either the GNU General Public License Version 2 or later (the "GPL"), or
+ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ in which case the provisions of the GPL or the LGPL are applicable instead
+ of those above. If you wish to allow use of your version of this file only
+ under the terms of either the GPL or the LGPL, and not to allow others to
+ use your version of this file under the terms of the MPL, indicate your
+ decision by deleting the provisions above and replace them with the notice
+ and other provisions required by the GPL or the LGPL. If you do not delete
+ the provisions above, a recipient may use your version of this file under
+ the terms of any one of the MPL, the GPL or the LGPL.
+
+*/
+
+namespace OpenHardwareMonitor.Wmi {
+ interface IWmiObject {
+ // Both of these get exposed to WMI
+ string Name { get; }
+ string Identifier { get; }
+
+ // Not exposed.
+ void Update();
+ }
+}
diff -r be9534663a55 -r 04dbd92d1116 Wmi/Sensor.cs
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Wmi/Sensor.cs Sat Oct 16 18:24:20 2010 +0000
@@ -0,0 +1,81 @@
+/*
+
+ Version: MPL 1.1/GPL 2.0/LGPL 2.1
+
+ The contents of this file are subject to the Mozilla Public License Version
+ 1.1 (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.mozilla.org/MPL/
+
+ Software distributed under the License is distributed on an "AS IS" basis,
+ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ for the specific language governing rights and limitations under the License.
+
+ The Original Code is the Open Hardware Monitor code.
+
+ The Initial Developer of the Original Code is
+ Paul Werelds .
+ Portions created by the Initial Developer are Copyright (C) 2009-2010
+ the Initial Developer. All Rights Reserved.
+
+ Contributor(s):
+
+ Alternatively, the contents of this file may be used under the terms of
+ either the GNU General Public License Version 2 or later (the "GPL"), or
+ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ in which case the provisions of the GPL or the LGPL are applicable instead
+ of those above. If you wish to allow use of your version of this file only
+ under the terms of either the GPL or the LGPL, and not to allow others to
+ use your version of this file under the terms of the MPL, indicate your
+ decision by deleting the provisions above and replace them with the notice
+ and other provisions required by the GPL or the LGPL. If you do not delete
+ the provisions above, a recipient may use your version of this file under
+ the terms of any one of the MPL, the GPL or the LGPL.
+
+*/
+
+using System.Management.Instrumentation;
+using OpenHardwareMonitor.Hardware;
+using OpenHardwareMonitor.Wmi;
+
+namespace OpenHardwareMonitor.Wmi {
+ [InstrumentationClass(InstrumentationType.Instance)]
+ public class Sensor : IWmiObject {
+ private ISensor sensor;
+
+ #region WMI Exposed
+
+ public string SensorType { get; private set; }
+ public string Identifier { get; private set; }
+ public string Parent { get; private set; }
+ public string Name { get; private set; }
+ public float Value { get; private set; }
+ public float Min { get; private set; }
+ public float Max { get; private set; }
+ public int Index { get; private set; }
+
+ #endregion
+
+ public Sensor(ISensor sensor) {
+ Name = sensor.Name;
+ Index = sensor.Index;
+
+ SensorType = sensor.SensorType.ToString();
+ Identifier = sensor.Identifier.ToString();
+ Parent = sensor.Hardware.Identifier.ToString();
+
+ this.sensor = sensor;
+ }
+
+ public void Update() {
+ Value = (sensor.Value != null) ? (float)sensor.Value : 0;
+
+ if (sensor.Min != null)
+ Min = (float)sensor.Min;
+
+ if (sensor.Max != null)
+ Max = (float)sensor.Max;
+ }
+ }
+}
diff -r be9534663a55 -r 04dbd92d1116 Wmi/WmiProvider.cs
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Wmi/WmiProvider.cs Sat Oct 16 18:24:20 2010 +0000
@@ -0,0 +1,142 @@
+/*
+
+ Version: MPL 1.1/GPL 2.0/LGPL 2.1
+
+ The contents of this file are subject to the Mozilla Public License Version
+ 1.1 (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.mozilla.org/MPL/
+
+ Software distributed under the License is distributed on an "AS IS" basis,
+ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ for the specific language governing rights and limitations under the License.
+
+ The Original Code is the Open Hardware Monitor code.
+
+ The Initial Developer of the Original Code is
+ Paul Werelds .
+ Portions created by the Initial Developer are Copyright (C) 2009-2010
+ the Initial Developer. All Rights Reserved.
+
+ Contributor(s):
+
+ Alternatively, the contents of this file may be used under the terms of
+ either the GNU General Public License Version 2 or later (the "GPL"), or
+ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ in which case the provisions of the GPL or the LGPL are applicable instead
+ of those above. If you wish to allow use of your version of this file only
+ under the terms of either the GPL or the LGPL, and not to allow others to
+ use your version of this file under the terms of the MPL, indicate your
+ decision by deleting the provisions above and replace them with the notice
+ and other provisions required by the GPL or the LGPL. If you do not delete
+ the provisions above, a recipient may use your version of this file under
+ the terms of any one of the MPL, the GPL or the LGPL.
+
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Management.Instrumentation;
+using OpenHardwareMonitor.Hardware;
+using OpenHardwareMonitor.Wmi;
+
+[assembly: Instrumented("root/OpenHardwareMonitor")]
+
+[System.ComponentModel.RunInstaller(true)]
+public class InstanceInstaller : DefaultManagementProjectInstaller { }
+
+namespace OpenHardwareMonitor.Wmi {
+ ///
+ /// The WMI Provider.
+ /// This class is not exposed to WMI itself.
+ ///
+ public class WmiProvider : IDisposable {
+ private List activeInstances;
+
+ public WmiProvider(IComputer computer) {
+ activeInstances = new List();
+
+ foreach (IHardware hardware in computer.Hardware)
+ ComputerHardwareAdded(hardware);
+
+ computer.HardwareAdded += ComputerHardwareAdded;
+ computer.HardwareRemoved += ComputerHardwareRemoved;
+ }
+
+ public void Update() {
+ foreach (IWmiObject instance in activeInstances)
+ instance.Update();
+ }
+
+ #region Eventhandlers
+
+ private void ComputerHardwareAdded(IHardware hardware) {
+ if (!Exists(hardware.Identifier.ToString())) {
+ foreach (ISensor sensor in hardware.Sensors)
+ HardwareSensorAdded(sensor);
+
+ hardware.SensorAdded += HardwareSensorAdded;
+ hardware.SensorRemoved += HardwareSensorRemoved;
+
+ Hardware hw = new Hardware(hardware);
+ activeInstances.Add(hw);
+
+ Instrumentation.Publish(hw);
+ }
+
+ foreach (IHardware subHardware in hardware.SubHardware)
+ ComputerHardwareAdded(subHardware);
+ }
+
+ private void HardwareSensorAdded(ISensor data) {
+ Sensor sensor = new Sensor(data);
+ activeInstances.Add(sensor);
+
+ Instrumentation.Publish(sensor);
+ }
+
+ private void ComputerHardwareRemoved(IHardware hardware) {
+ hardware.SensorAdded -= HardwareSensorAdded;
+ hardware.SensorRemoved -= HardwareSensorRemoved;
+
+ foreach (ISensor sensor in hardware.Sensors)
+ HardwareSensorRemoved(sensor);
+
+ foreach (IHardware subHardware in hardware.SubHardware)
+ ComputerHardwareRemoved(subHardware);
+
+ RevokeInstance(hardware.Identifier.ToString());
+ }
+
+ private void HardwareSensorRemoved(ISensor sensor) {
+ RevokeInstance(sensor.Identifier.ToString());
+ }
+
+ #endregion
+
+ #region Helpers
+
+ private bool Exists(string identifier) {
+ return activeInstances.Exists(h => h.Identifier == identifier);
+ }
+
+ private void RevokeInstance(string identifier) {
+ int instanceIndex = activeInstances.FindIndex(
+ item => item.Identifier == identifier.ToString()
+ );
+
+ Instrumentation.Revoke(activeInstances[instanceIndex]);
+
+ activeInstances.RemoveAt(instanceIndex);
+ }
+
+ #endregion
+
+ public void Dispose() {
+ foreach (IWmiObject instance in activeInstances)
+ Instrumentation.Revoke(instance);
+ activeInstances = null;
+ }
+ }
+}