diff options
author | 2024-05-18 11:44:12 +0200 | |
---|---|---|
committer | 2024-05-18 11:44:12 +0200 | |
commit | d993b53e095d9cee71c30b315d8fe84d207ddb6d (patch) | |
tree | d9f1c5fb9d3d3585c24b22d27bad7d9723fac6b8 /examples | |
parent | fb23e4c3ff7aec13725aa3814630b436cd94cab3 (diff) | |
parent | 4936efc3751b769984bff4344a9fbb198a7c1ea2 (diff) | |
download | iced-d993b53e095d9cee71c30b315d8fe84d207ddb6d.tar.gz iced-d993b53e095d9cee71c30b315d8fe84d207ddb6d.tar.bz2 iced-d993b53e095d9cee71c30b315d8fe84d207ddb6d.zip |
Merge pull request #2421 from skygrango/wasm/update-clock-example
Fix `clock` example doesn't get the correct local time under unix system
Diffstat (limited to 'examples')
-rw-r--r-- | examples/clock/Cargo.toml | 3 | ||||
-rw-r--r-- | examples/clock/src/main.rs | 22 |
2 files changed, 11 insertions, 14 deletions
diff --git a/examples/clock/Cargo.toml b/examples/clock/Cargo.toml index dc2e5382..bc6c202b 100644 --- a/examples/clock/Cargo.toml +++ b/examples/clock/Cargo.toml @@ -8,6 +8,5 @@ publish = false [dependencies] iced.workspace = true iced.features = ["canvas", "tokio", "debug"] - -time = { version = "0.3", features = ["local-offset"] } +chrono = "0.4" tracing-subscriber = "0.3" diff --git a/examples/clock/src/main.rs b/examples/clock/src/main.rs index d717db36..7c4685c4 100644 --- a/examples/clock/src/main.rs +++ b/examples/clock/src/main.rs @@ -1,5 +1,6 @@ use iced::alignment; use iced::mouse; +use iced::time; use iced::widget::canvas::{stroke, Cache, Geometry, LineCap, Path, Stroke}; use iced::widget::{canvas, container}; use iced::{ @@ -18,13 +19,13 @@ pub fn main() -> iced::Result { } struct Clock { - now: time::OffsetDateTime, + now: chrono::DateTime<chrono::Local>, clock: Cache, } #[derive(Debug, Clone, Copy)] enum Message { - Tick(time::OffsetDateTime), + Tick(chrono::DateTime<chrono::Local>), } impl Clock { @@ -54,16 +55,12 @@ impl Clock { } fn subscription(&self) -> Subscription<Message> { - iced::time::every(std::time::Duration::from_millis(500)).map(|_| { - Message::Tick( - time::OffsetDateTime::now_local() - .unwrap_or_else(|_| time::OffsetDateTime::now_utc()), - ) - }) + time::every(time::Duration::from_millis(500)) + .map(|_| Message::Tick(chrono::offset::Local::now())) } fn theme(&self) -> Theme { - Theme::ALL[(self.now.unix_timestamp() as usize / 10) % Theme::ALL.len()] + Theme::ALL[(self.now.timestamp() as usize / 10) % Theme::ALL.len()] .clone() } } @@ -71,8 +68,7 @@ impl Clock { impl Default for Clock { fn default() -> Self { Self { - now: time::OffsetDateTime::now_local() - .unwrap_or_else(|_| time::OffsetDateTime::now_utc()), + now: chrono::offset::Local::now(), clock: Cache::default(), } } @@ -89,6 +85,8 @@ impl<Message> canvas::Program<Message> for Clock { bounds: Rectangle, _cursor: mouse::Cursor, ) -> Vec<Geometry> { + use chrono::Timelike; + let clock = self.clock.draw(renderer, bounds.size(), |frame| { let palette = theme.extended_palette(); @@ -169,7 +167,7 @@ impl<Message> canvas::Program<Message> for Clock { } } -fn hand_rotation(n: u8, total: u8) -> Degrees { +fn hand_rotation(n: u32, total: u32) -> Degrees { let turns = n as f32 / total as f32; Degrees(360.0 * turns) |