summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector@hecrj.dev>2024-05-18 11:44:12 +0200
committerLibravatar GitHub <noreply@github.com>2024-05-18 11:44:12 +0200
commitd993b53e095d9cee71c30b315d8fe84d207ddb6d (patch)
treed9f1c5fb9d3d3585c24b22d27bad7d9723fac6b8 /examples
parentfb23e4c3ff7aec13725aa3814630b436cd94cab3 (diff)
parent4936efc3751b769984bff4344a9fbb198a7c1ea2 (diff)
downloadiced-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.toml3
-rw-r--r--examples/clock/src/main.rs22
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)