use embedded_graphics::{draw_target::DrawTarget, pixelcolor::Rgb565, primitives::Rectangle};
use crate::{FsTheme, I18n, Localized, TouchEvent};
use super::ViewResponse;
pub trait ViewDelegate<'a, ViewId> {
fn title(&self, view: ViewId) -> Localized<'a>;
fn draw_view<D>(
&self,
view: ViewId,
display: &mut D,
frame: Rectangle,
theme: &FsTheme,
i18n: &I18n<'a>,
) where
D: DrawTarget<Color = Rgb565>;
fn draw_layer<D>(
&self,
view: ViewId,
display: &mut D,
frame: Rectangle,
animated: bool,
theme: &FsTheme,
i18n: &I18n<'a>,
) where
D: DrawTarget<Color = Rgb565>,
{
let _ = animated;
self.draw_view(view, display, frame, theme, i18n);
}
fn handle_view_touch(
&mut self,
view: ViewId,
touch: TouchEvent,
frame: Rectangle,
theme: &FsTheme,
i18n: &I18n<'a>,
) -> ViewResponse<ViewId>;
fn tick(
&mut self,
_view: ViewId,
_dt_ms: u32,
_frame: Rectangle,
_theme: &FsTheme,
_i18n: &I18n<'a>,
) -> ViewResponse<ViewId> {
ViewResponse::none()
}
fn clear_touch_state(&mut self) {}
}