// SPDX-License-Identifier: EUPL-1.2+ // SPDX-FileCopyrightText: 2025 Johannes Süllner mod pages; use iced::Element; use iced::Size; use iced::Subscription; use iced::Task; use pages::Event; fn main() -> iced::Result { iced::application( "Spectrum installer", SpectrumInstaller::update, SpectrumInstaller::view, ) .window_size(Size::new(pages::WINDOW_WIDTH, pages::WINDOW_HEIGHT)) .font(iced_fonts::BOOTSTRAP_FONT_BYTES) .resizable(false) .subscription(SpectrumInstaller::subscription) .run() } struct SpectrumInstaller { current_page: Box, } impl Default for SpectrumInstaller { fn default() -> Self { Self { current_page: Box::new(pages::INITAL_PAGE), } } } impl SpectrumInstaller { fn update(&mut self, event: pages::Event) -> Task { let (maybe_new_page, task) = self.current_page.update(event); if let Some(new_page) = maybe_new_page { self.current_page = new_page; } task } fn view(&self) -> Element<'_, pages::Event> { self.current_page.view() } fn subscription(&self) -> Subscription { self.current_page.subscription() } }