From 9bbe8c6091559deb0982e4cb054968d1a6809d05 Mon Sep 17 00:00:00 2001 From: Louis Hollingworth Date: Sun, 9 Feb 2025 21:02:15 +0000 Subject: [PATCH] Added basic layout Signed-off-by: Louis Hollingworth --- src/main.rs | 41 +++++++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/src/main.rs b/src/main.rs index 241bc71..39d645f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,14 +1,43 @@ #[derive(Default)] -struct App {} +struct App { + current_screen: Screen, +} -#[derive(Debug)] -enum Message {} +#[derive(Debug, Clone)] +enum Message { + ChangeScreen(Screen), +} + +#[derive(Debug, Default, Clone, Copy)] +enum Screen { + #[default] + Home, + Search, +} impl App { - fn update(&mut self, message: Message) {} + fn update(&mut self, message: Message) { + match message { + Message::ChangeScreen(s) => self.current_screen = s, + } + } fn view(&self) -> iced::Element<'_, Message> { - let content = iced::widget::column!["Saluton, Mondo!"]; - content.into() + let side_bar = iced::widget::column![ + iced::widget::button("Home") + .on_press(Message::ChangeScreen(Screen::Home)) + .width(iced::Length::Fixed(100.0)), + iced::widget::button("Search") + .on_press(Message::ChangeScreen(Screen::Search)) + .width(iced::Length::Fixed(100.0)) + ]; + let screen = match self.current_screen { + Screen::Home => "Home", + Screen::Search => "Search", + }; + let content = iced::widget::column!["You are at:", screen]; + let page = iced::widget::row![side_bar, content].spacing(20); + + iced::widget::container(page).into() } }