#[path = "support/mod.rs"]
mod support;
use embedded_graphics::{
prelude::{Point, Size},
primitives::Rectangle,
};
use faststep::{
Localized, SplitAxis, SplitView, StackView, TabSpec, TabView, TouchEvent, TouchPhase,
};
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
enum Screen {
Devices,
DeviceDetail,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
enum TabId {
Home,
Logs,
Settings,
}
fn main() {
let bounds = Rectangle::new(Point::zero(), Size::new(320, 240));
let split = SplitView::new(SplitAxis::Horizontal, 620, 12);
let _layout = split.layout(bounds);
let mut stack = StackView::<Screen, _, 4>::new(Screen::Devices, |screen| match screen {
Screen::Devices => Localized::new("screen.devices", "Devices"),
Screen::DeviceDetail => Localized::new("screen.detail", "Device"),
});
let _ = stack.push_view(Screen::DeviceDetail);
let _ = stack.motion(bounds);
let _ = stack.handle_touch(
TouchEvent::new(Point::new(12, 12), TouchPhase::Start, 1),
bounds,
);
let tabs = [
TabSpec {
key: TabId::Home,
icon: "H",
title: Localized::new("tab.home", "Home"),
},
TabSpec {
key: TabId::Logs,
icon: "L",
title: Localized::new("tab.logs", "Logs"),
},
TabSpec {
key: TabId::Settings,
icon: "S",
title: Localized::new("tab.settings", "Settings"),
},
];
let mut tab_view = TabView::new(tabs, 0);
let _ = tab_view.content_frame(bounds, &support::theme());
let _ = tab_view.handle_touch(
TouchEvent::new(Point::new(200, 220), TouchPhase::End, 2),
bounds,
&support::theme(),
);
}