diff options
-rw-r--r-- | examples/cached/Cargo.toml | 10 | ||||
-rw-r--r-- | examples/cached/src/main.rs | 139 | ||||
-rw-r--r-- | examples/lazy/src/main.rs | 2 |
3 files changed, 1 insertions, 150 deletions
diff --git a/examples/cached/Cargo.toml b/examples/cached/Cargo.toml deleted file mode 100644 index 2c7edde2..00000000 --- a/examples/cached/Cargo.toml +++ /dev/null @@ -1,10 +0,0 @@ -[package] -name = "cached" -version = "0.1.0" -authors = ["Nick Senger <dev@nsenger.com>"] -edition = "2021" -publish = false - -[dependencies] -iced = { path = "../..", features = ["debug"] } -iced_lazy = { path = "../../lazy" } diff --git a/examples/cached/src/main.rs b/examples/cached/src/main.rs deleted file mode 100644 index 8845b874..00000000 --- a/examples/cached/src/main.rs +++ /dev/null @@ -1,139 +0,0 @@ -use iced::theme; -use iced::widget::{ - button, column, horizontal_space, row, scrollable, text, text_input, -}; -use iced::{Element, Length, Sandbox, Settings}; -use iced_lazy::lazy; - -use std::collections::HashSet; - -pub fn main() -> iced::Result { - App::run(Settings::default()) -} - -struct App { - options: HashSet<String>, - input: String, - order: Order, -} - -impl Default for App { - fn default() -> Self { - Self { - options: ["Foo", "Bar", "Baz", "Qux", "Corge", "Waldo", "Fred"] - .into_iter() - .map(ToString::to_string) - .collect(), - input: Default::default(), - order: Order::Ascending, - } - } -} - -#[derive(Debug, Clone)] -enum Message { - InputChanged(String), - ToggleOrder, - DeleteOption(String), - AddOption(String), -} - -impl Sandbox for App { - type Message = Message; - - fn new() -> Self { - Self::default() - } - - fn title(&self) -> String { - String::from("Cached - Iced") - } - - fn update(&mut self, message: Message) { - match message { - Message::InputChanged(input) => { - self.input = input; - } - Message::ToggleOrder => { - self.order = match self.order { - Order::Ascending => Order::Descending, - Order::Descending => Order::Ascending, - } - } - Message::AddOption(option) => { - self.options.insert(option); - self.input.clear(); - } - Message::DeleteOption(option) => { - self.options.remove(&option); - } - } - } - - fn view(&self) -> Element<Message> { - let options = lazy((&self.order, self.options.len()), || { - let mut options: Vec<_> = self.options.iter().collect(); - - options.sort_by(|a, b| match self.order { - Order::Ascending => a.to_lowercase().cmp(&b.to_lowercase()), - Order::Descending => b.to_lowercase().cmp(&a.to_lowercase()), - }); - - column( - options - .into_iter() - .map(|option| { - row![ - text(option), - horizontal_space(Length::Fill), - button("Delete") - .on_press(Message::DeleteOption( - option.to_string(), - ),) - .style(theme::Button::Destructive) - ] - .into() - }) - .collect(), - ) - .spacing(10) - }); - - column![ - scrollable(options).height(Length::Fill), - row![ - text_input( - "Add a new option", - &self.input, - Message::InputChanged, - ) - .on_submit(Message::AddOption(self.input.clone())), - button(text(format!("Toggle Order ({})", self.order))) - .on_press(Message::ToggleOrder) - ] - .spacing(10) - ] - .spacing(20) - .padding(20) - .into() - } -} - -#[derive(Debug, Hash)] -enum Order { - Ascending, - Descending, -} - -impl std::fmt::Display for Order { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!( - f, - "{}", - match self { - Self::Ascending => "Ascending", - Self::Descending => "Descending", - } - ) - } -} diff --git a/examples/lazy/src/main.rs b/examples/lazy/src/main.rs index 8845b874..4413262d 100644 --- a/examples/lazy/src/main.rs +++ b/examples/lazy/src/main.rs @@ -46,7 +46,7 @@ impl Sandbox for App { } fn title(&self) -> String { - String::from("Cached - Iced") + String::from("Lazy - Iced") } fn update(&mut self, message: Message) { |