Skip to main content

ViewDelegate

Trait ViewDelegate 

Source
pub trait ViewDelegate<'a, ViewId> {
    // Required methods
    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 handle_view_touch(
        &mut self,
        view: ViewId,
        touch: TouchEvent,
        frame: Rectangle,
        theme: &FsTheme,
        i18n: &I18n<'a>,
    ) -> ViewResponse<ViewId>;

    // Provided methods
    fn draw_layer<D>(
        &self,
        view: ViewId,
        display: &mut D,
        frame: Rectangle,
        animated: bool,
        theme: &FsTheme,
        i18n: &I18n<'a>,
    )
       where D: DrawTarget<Color = Rgb565> { ... }
    fn tick(
        &mut self,
        _view: ViewId,
        _dt_ms: u32,
        _frame: Rectangle,
        _theme: &FsTheme,
        _i18n: &I18n<'a>,
    ) -> ViewResponse<ViewId> { ... }
    fn clear_touch_state(&mut self) { ... }
}
Expand description

Compatibility delegate API retained for older UiApp consumers.

Required Methods§

Source

fn title(&self, view: ViewId) -> Localized<'a>

Returns the localized title for view.

Source

fn draw_view<D>( &self, view: ViewId, display: &mut D, frame: Rectangle, theme: &FsTheme, i18n: &I18n<'a>, )
where D: DrawTarget<Color = Rgb565>,

Draws one view.

Source

fn handle_view_touch( &mut self, view: ViewId, touch: TouchEvent, frame: Rectangle, theme: &FsTheme, i18n: &I18n<'a>, ) -> ViewResponse<ViewId>

Handles a touch event for view.

Provided Methods§

Source

fn draw_layer<D>( &self, view: ViewId, display: &mut D, frame: Rectangle, animated: bool, theme: &FsTheme, i18n: &I18n<'a>, )
where D: DrawTarget<Color = Rgb565>,

Draws one view layer during animation.

Examples found in repository?
src/app/render.rs (lines 98-105)
93    pub(super) fn draw_layer<D>(&self, display: &mut D, layer: Layer<ViewId>)
94    where
95        D: DrawTarget<Color = Rgb565>,
96    {
97        if layer.offset == Point::zero() {
98            self.delegate.draw_layer(
99                layer.key,
100                display,
101                layer.frame,
102                false,
103                &self.theme,
104                &self.i18n,
105            );
106            return;
107        }
108
109        let mut translated = display.translated(layer.offset);
110        let mut clipped = translated.clipped(&layer.frame);
111        self.delegate.draw_layer(
112            layer.key,
113            &mut clipped,
114            layer.frame,
115            true,
116            &self.theme,
117            &self.i18n,
118        );
119    }
Source

fn tick( &mut self, _view: ViewId, _dt_ms: u32, _frame: Rectangle, _theme: &FsTheme, _i18n: &I18n<'a>, ) -> ViewResponse<ViewId>

Advances per-view time-based state.

Examples found in repository?
src/app/ui_app.rs (line 90)
83    pub fn tick(&mut self, dt_ms: u32, bounds: Rectangle) -> AppRedraw {
84        if self.stack.advance(dt_ms) {
85            return AppRedraw::StackMotion;
86        }
87        let body = self.content_frame(bounds);
88        let response = self
89            .delegate
90            .tick(self.stack.top(), dt_ms, body, &self.theme, &self.i18n);
91        self.apply_response(response)
92    }
Source

fn clear_touch_state(&mut self)

Clears any delegate-owned touch state.

Examples found in repository?
src/app/ui_app.rs (line 148)
146    pub fn clear_touch_state(&mut self) {
147        self.nav_touch.clear();
148        self.delegate.clear_touch_state();
149    }

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§