mod.rs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. mod battery;
  2. mod tp_battery;
  3. mod disk;
  4. mod netspeed;
  5. mod time;
  6. mod temperature;
  7. use config::Config;
  8. use self::battery::BatterySensor;
  9. use self::tp_battery::TPBatterySensor;
  10. use self::disk::DiskSensor;
  11. use self::netspeed::NetSpeedSensor;
  12. use self::temperature::TempSensor;
  13. use self::time::TimeSensor;
  14. pub trait Sensor {
  15. fn icon(&self) -> String;
  16. fn status(&self) -> String;
  17. fn process(&mut self);
  18. }
  19. pub fn sensor_list(config: &Config) -> Vec<Box<Sensor>> {
  20. let zone = config.lookup("sensors.thermal_zone").unwrap();
  21. let zone = zone.as_str().unwrap();
  22. let devices = config.lookup("netspeed.devices").unwrap();
  23. let devices = devices.as_slice().unwrap();
  24. let devices: Vec<&str> = devices.iter().flat_map(|elem| elem.as_str()).collect();
  25. let mut sensors: Vec<Box<Sensor>> = vec![
  26. Box::new(NetSpeedSensor::new(&devices)),
  27. Box::new(DiskSensor::new("/")),
  28. Box::new(TempSensor::new(zone)),
  29. Box::new(TimeSensor::new("%H:%M", true)),
  30. Box::new(TimeSensor::new("%a, %Y-%m-%d %H:%M", false))
  31. ];
  32. let bat = config.lookup("sensors.battery");
  33. let bat = bat.map(|bat| bat.as_str().unwrap());
  34. bat.map(|bat| sensors.insert(1, Box::new(BatterySensor::new(bat))));
  35. let tp_bat = config.lookup("sensors.tp_battery");
  36. let tp_bat = tp_bat.map(|tp_bat| {
  37. let items = tp_bat.as_slice().unwrap();
  38. items.iter().flat_map(|elem| elem.as_str()).collect::<Vec<&str>>()
  39. });
  40. tp_bat.map(|bats| sensors.insert(1, Box::new(TPBatterySensor::new(&bats))));
  41. sensors
  42. }