// SPDX-License-Identifier: EUPL-1.2+ // SPDX-FileCopyrightText: 2025 Johannes Süllner mod destination_device; mod pages; use iced::Element; use iced::Size; use iced::Subscription; use iced::Task; use pages::Event; fn main() -> iced::Result { iced::application( SpectrumInstaller::new, SpectrumInstaller::update, SpectrumInstaller::view, ) .subscription(SpectrumInstaller::subscription) .font(iced_fonts::BOOTSTRAP_FONT_BYTES) .title("Spectrum installer") .window_size(Size::new(pages::WINDOW_WIDTH, pages::WINDOW_HEIGHT)) .resizable(false) .run() } struct SpectrumInstaller { current_page: Box, } impl SpectrumInstaller { fn new() -> Self { Self { current_page: Box::new(pages::INITAL_PAGE), } } 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() } }