Hardware/Computer.cs
changeset 64 15181001ee61
parent 63 1a7c13ac7348
child 83 3fdadd4a830f
     1.1 --- a/Hardware/Computer.cs	Sat Feb 27 15:55:17 2010 +0000
     1.2 +++ b/Hardware/Computer.cs	Sat Feb 27 20:08:13 2010 +0000
     1.3 @@ -61,7 +61,7 @@
     1.4        groups.Add(group);
     1.5  
     1.6        if (HardwareAdded != null)
     1.7 -        foreach (IHardware hardware in group.Hardware)
     1.8 +        foreach (IHardware hardware in group.Hardware) 
     1.9            HardwareAdded(hardware);
    1.10      }
    1.11  
    1.12 @@ -72,7 +72,7 @@
    1.13        groups.Remove(group);
    1.14  
    1.15        if (HardwareRemoved != null)
    1.16 -        foreach (IHardware hardware in group.Hardware)
    1.17 +        foreach (IHardware hardware in group.Hardware) 
    1.18            HardwareRemoved(hardware);
    1.19      }
    1.20  
    1.21 @@ -80,8 +80,7 @@
    1.22        if (open)
    1.23          return;
    1.24  
    1.25 -      Add(new SMBIOS.SMBIOSGroup());
    1.26 -      Add(new LPC.LPCGroup());
    1.27 +      Add(new Mainboard.MainboardGroup());
    1.28        Add(new CPU.CPUGroup());
    1.29        Add(new ATI.ATIGroup());
    1.30        Add(new Nvidia.NvidiaGroup());
    1.31 @@ -93,10 +92,19 @@
    1.32        open = true;
    1.33      }
    1.34  
    1.35 +    private void SubHardwareUpdate(IHardware hardware) {
    1.36 +      foreach (IHardware subHardware in hardware.SubHardware) {
    1.37 +        subHardware.Update();
    1.38 +        SubHardwareUpdate(subHardware);
    1.39 +      }
    1.40 +    }
    1.41 +
    1.42      public void Update() {
    1.43        foreach (IGroup group in groups)
    1.44 -        foreach (IHardware hardware in group.Hardware)
    1.45 +        foreach (IHardware hardware in group.Hardware) {
    1.46            hardware.Update();
    1.47 +          SubHardwareUpdate(hardware);
    1.48 +        }
    1.49      }
    1.50  
    1.51      public bool HDDEnabled {
    1.52 @@ -131,6 +139,38 @@
    1.53        writer.WriteLine();
    1.54      }
    1.55  
    1.56 +    private void ReportHardwareTree(IHardware hardware, TextWriter w, 
    1.57 +      string space) 
    1.58 +    {
    1.59 +      w.WriteLine("{0}|", space);
    1.60 +      w.WriteLine("{0}+-+ {1} ({2})", 
    1.61 +        space, hardware.Name, hardware.Identifier);
    1.62 +      foreach (ISensor sensor in hardware.Sensors) {
    1.63 +        w.WriteLine("{0}|   +- {1} : {2} : {3} : {4}",
    1.64 +          space, sensor.SensorType, sensor.Index, sensor.Name,
    1.65 +            string.Format(CultureInfo.InvariantCulture, "{0} : {1} : {2}",
    1.66 +            sensor.Value, sensor.Min, sensor.Max));
    1.67 +        foreach (IParameter parameter in sensor.Parameters) {
    1.68 +          w.WriteLine("{0}|      +- {1} : {2} : {3}",
    1.69 +            space, parameter.Name, parameter.IsDefault,
    1.70 +            string.Format(CultureInfo.InvariantCulture, "{0} : {1}",
    1.71 +              parameter.DefaultValue, parameter.Value));
    1.72 +        }
    1.73 +      }
    1.74 +      foreach (IHardware subHardware in hardware.SubHardware)
    1.75 +        ReportHardwareTree(subHardware, w, "|   ");
    1.76 +    }
    1.77 +
    1.78 +    private void ReportHardware(IHardware hardware, TextWriter w) {
    1.79 +      string hardwareReport = hardware.GetReport();
    1.80 +      if (hardwareReport != null && hardwareReport != "") {
    1.81 +        NewSection(w);
    1.82 +        w.Write(hardwareReport);
    1.83 +      }
    1.84 +      foreach (IHardware subHardware in hardware.SubHardware)
    1.85 +        ReportHardware(subHardware, w);
    1.86 +    }
    1.87 +
    1.88      public void SaveReport(Version version) {
    1.89  
    1.90        using (TextWriter w =
    1.91 @@ -146,23 +186,8 @@
    1.92  
    1.93          NewSection(w);
    1.94          foreach (IGroup group in groups) {
    1.95 -          foreach (IHardware hardware in group.Hardware) {
    1.96 -            w.WriteLine("|");
    1.97 -            w.WriteLine("+-+ {0} ({1})",
    1.98 -              new object[] { hardware.Name, hardware.Identifier });
    1.99 -            foreach (ISensor sensor in hardware.Sensors) {
   1.100 -              w.WriteLine("|   +- {0} : {1} : {2} : {3}",
   1.101 -                sensor.SensorType, sensor.Index, sensor.Name, 
   1.102 -                  string.Format(CultureInfo.InvariantCulture, "{0} : {1} : {2}", 
   1.103 -                  sensor.Value, sensor.Min, sensor.Max) );
   1.104 -              foreach (IParameter parameter in sensor.Parameters) {
   1.105 -                w.WriteLine("|      +- {0} : {1} : {2}",
   1.106 -                  parameter.Name, parameter.IsDefault,   
   1.107 -                  string.Format(CultureInfo.InvariantCulture, "{0} : {1}", 
   1.108 -                    parameter.DefaultValue, parameter.Value) );
   1.109 -              }
   1.110 -            }
   1.111 -          }
   1.112 +          foreach (IHardware hardware in group.Hardware)
   1.113 +            ReportHardwareTree(hardware, w, "");          
   1.114          }
   1.115          w.WriteLine();
   1.116  
   1.117 @@ -174,13 +199,9 @@
   1.118            }
   1.119  
   1.120            IHardware[] hardwareArray = group.Hardware;
   1.121 -          foreach (IHardware hardware in hardwareArray) {
   1.122 -            string hardwareReport = hardware.GetReport();
   1.123 -            if (hardwareReport != null && hardwareReport != "") {
   1.124 -              NewSection(w);
   1.125 -              w.Write(hardwareReport);
   1.126 -            }
   1.127 -          }
   1.128 +          foreach (IHardware hardware in hardwareArray)
   1.129 +            ReportHardware(hardware, w);
   1.130 +          
   1.131          }
   1.132        }
   1.133      }
   1.134 @@ -199,7 +220,5 @@
   1.135      public event HardwareEventHandler HardwareAdded;
   1.136      public event HardwareEventHandler HardwareRemoved;
   1.137  
   1.138 -
   1.139 -
   1.140    }
   1.141  }