summaryrefslogtreecommitdiffstats
path: root/examples/stopwatch
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-03-16 05:33:47 +0100
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-03-16 05:33:47 +0100
commitc22269bff3085012d326a0df77bf27ad5bcb41b7 (patch)
tree1083f21d012ab2bac88fb51537d4dc431bc7f170 /examples/stopwatch
parent0524e9b4571d264018656418f02a1f9e27e268d7 (diff)
downloadiced-c22269bff3085012d326a0df77bf27ad5bcb41b7.tar.gz
iced-c22269bff3085012d326a0df77bf27ad5bcb41b7.tar.bz2
iced-c22269bff3085012d326a0df77bf27ad5bcb41b7.zip
Introduce `Program` API
Diffstat (limited to 'examples/stopwatch')
-rw-r--r--examples/stopwatch/src/main.rs44
1 files changed, 14 insertions, 30 deletions
diff --git a/examples/stopwatch/src/main.rs b/examples/stopwatch/src/main.rs
index 56b7686e..72c12660 100644
--- a/examples/stopwatch/src/main.rs
+++ b/examples/stopwatch/src/main.rs
@@ -1,27 +1,32 @@
use iced::alignment;
-use iced::executor;
use iced::keyboard;
use iced::time;
use iced::widget::{button, column, container, row, text};
-use iced::{
- Alignment, Application, Command, Element, Length, Settings, Subscription,
- Theme,
-};
+use iced::{Alignment, Element, Length, Subscription, Theme};
use std::time::{Duration, Instant};
pub fn main() -> iced::Result {
- Stopwatch::run(Settings::default())
+ iced::sandbox(Stopwatch::update, Stopwatch::view)
+ .subscription(Stopwatch::subscription)
+ .theme(Stopwatch::theme)
+ .title("Stopwatch - Iced")
+ .run()
}
+#[derive(Default)]
struct Stopwatch {
duration: Duration,
state: State,
}
+#[derive(Default)]
enum State {
+ #[default]
Idle,
- Ticking { last_tick: Instant },
+ Ticking {
+ last_tick: Instant,
+ },
}
#[derive(Debug, Clone)]
@@ -31,27 +36,8 @@ enum Message {
Tick(Instant),
}
-impl Application for Stopwatch {
- type Message = Message;
- type Theme = Theme;
- type Executor = executor::Default;
- type Flags = ();
-
- fn new(_flags: ()) -> (Stopwatch, Command<Message>) {
- (
- Stopwatch {
- duration: Duration::default(),
- state: State::Idle,
- },
- Command::none(),
- )
- }
-
- fn title(&self) -> String {
- String::from("Stopwatch - Iced")
- }
-
- fn update(&mut self, message: Message) -> Command<Message> {
+impl Stopwatch {
+ fn update(&mut self, message: Message) {
match message {
Message::Toggle => match self.state {
State::Idle => {
@@ -73,8 +59,6 @@ impl Application for Stopwatch {
self.duration = Duration::default();
}
}
-
- Command::none()
}
fn subscription(&self) -> Subscription<Message> {