|  | @@ -0,0 +1,54 @@
 | 
	
		
			
				|  |  | +use config::Config;
 | 
	
		
			
				|  |  | +use super::super::sensors;
 | 
	
		
			
				|  |  | +use super::super::sensors::Sensor;
 | 
	
		
			
				|  |  | +use ui::widget;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const MARGIN: u16 = 7;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +pub struct Sensors {
 | 
	
		
			
				|  |  | +    context: widget::DrawContext,
 | 
	
		
			
				|  |  | +    sensors: Vec<Box<Sensor>>
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +impl Sensors {
 | 
	
		
			
				|  |  | +    pub fn new(context: widget::DrawContext, config: &Config) -> Sensors {
 | 
	
		
			
				|  |  | +        Sensors {
 | 
	
		
			
				|  |  | +            context: context,
 | 
	
		
			
				|  |  | +            sensors: sensors::sensor_list(config)
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +impl widget::Widget for Sensors {
 | 
	
		
			
				|  |  | +    fn render(&mut self, x: u16) {
 | 
	
		
			
				|  |  | +        let mut offset = x;
 | 
	
		
			
				|  |  | +        for ref sensor in self.sensors.iter() {
 | 
	
		
			
				|  |  | +            let icon_width = self.context.measure_text(&sensor.icon());
 | 
	
		
			
				|  |  | +            let status_width = self.context.measure_text(&sensor.status());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            self.context.set_bg_color(0x6666, 0x6666, 0x6666, 0xFFFF);
 | 
	
		
			
				|  |  | +            self.context.draw_bg(offset, icon_width + MARGIN * 2);
 | 
	
		
			
				|  |  | +            self.context.draw_text(&sensor.icon(), offset + MARGIN);
 | 
	
		
			
				|  |  | +            offset += icon_width + MARGIN * 2;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            self.context.set_bg_color(0x0, 0x0, 0x0, 0xFFFF);
 | 
	
		
			
				|  |  | +            self.context.draw_text(&sensor.status(), offset + MARGIN);
 | 
	
		
			
				|  |  | +            offset += status_width + MARGIN * 2;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    fn width(&mut self) -> u16 {
 | 
	
		
			
				|  |  | +        let mut sum = 0;
 | 
	
		
			
				|  |  | +        for ref sensor in self.sensors.iter() {
 | 
	
		
			
				|  |  | +            let text = format!("{}{}", sensor.icon(), sensor.status());
 | 
	
		
			
				|  |  | +            sum += self.context.measure_text(&text) + MARGIN * 4;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        sum
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    fn update(&mut self) {
 | 
	
		
			
				|  |  | +        for ref mut sensor in self.sensors.iter_mut() {
 | 
	
		
			
				|  |  | +            sensor.process()
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |