37 lines
787 B
Rust
37 lines
787 B
Rust
pub(super) mod pages;
|
|
pub(super) mod widgets;
|
|
|
|
use std::collections::VecDeque;
|
|
|
|
use g13_driver::{G13, G13Event};
|
|
|
|
use crate::app::pages::StartPage;
|
|
|
|
use super::app::pages::Page;
|
|
|
|
pub struct App {
|
|
pages: VecDeque<Box<dyn Page<Display = G13>>>,
|
|
}
|
|
|
|
impl App {
|
|
pub fn new() -> Self {
|
|
let mut pages: VecDeque<Box<dyn Page<Display = G13>>> = VecDeque::new();
|
|
|
|
pages.push_back(Box::new(StartPage::new()));
|
|
|
|
Self { pages }
|
|
}
|
|
|
|
pub fn update(&mut self, event: G13Event) {
|
|
if let Some(last_page) = self.pages.iter_mut().last() {
|
|
last_page.update(event);
|
|
}
|
|
}
|
|
|
|
pub fn draw(&mut self, display: &mut G13) {
|
|
if let Some(last_page) = self.pages.iter_mut().last() {
|
|
last_page.draw(display);
|
|
}
|
|
}
|
|
}
|