diff --git a/src/bin/work.rs b/src/bin/work.rs index 1b99ace..4017fa7 100644 --- a/src/bin/work.rs +++ b/src/bin/work.rs @@ -30,13 +30,10 @@ fn main() { // Realtime upload/download rate for a interface bar.push(NetworkSpeedWidget::new(&opts.nic, 6)); - let mut dt = DateTimeWidget::tz( - "%H:%M %Z".to_string(), - "Europe/London".to_string(), - ); + let mut dt = DateTimeWidget::tz("%H:%M %Z".to_string(), "Europe/London".to_string()); dt.set_colors(&vec![ TimeColor { - start: NaiveTime::from_hms(13, 0, 0), + start: NaiveTime::from_hms(15, 0, 0), color: ColorRGB::yellow(), }, TimeColor { diff --git a/src/widgets/datetime.rs b/src/widgets/datetime.rs index b9d76b9..2801722 100644 --- a/src/widgets/datetime.rs +++ b/src/widgets/datetime.rs @@ -47,27 +47,28 @@ impl DateTimeWidget { impl Widget for DateTimeWidget { fn update(&mut self) -> Option { - let now = chrono::Local::now(); + let (time, time_string) = match &self.tz { + Some(tz) => { + let tz: Tz = tz.parse().unwrap(); + let now = chrono::Local::now(); + let now = now.with_timezone(&tz); + (now.time(), now.format(&self.fmt).to_string()) + } + None => { + let now = chrono::Local::now(); + (now.time(), now.format(&self.fmt).to_string()) + } + }; let color = if let Some(colors) = &self.colors { colors .iter() - .filter(|tc| tc.start < now.time()) + .filter(|tc| tc.start < time) .last() .map(|tc| tc.color.clone()) } else { None }; - let time_string = match &self.tz { - Some(tz) => { - let tz: Tz = tz.parse().unwrap(); - let now = now.with_timezone(&tz); - //TODO(wathiede): convert to timezone. - now.format(&self.fmt).to_string() - } - None => now.format(&self.fmt).to_string(), - }; - let mut data = Block::new().append_full_text(&time_string).clone(); if let Some(color) = color { data.color(color);