#![cfg_attr(target_arch = "xtensa", no_std, no_main)]
#![cfg_attr(
target_arch = "xtensa",
feature(impl_trait_in_assoc_type, type_alias_impl_trait)
)]
use oxivgl::{
layout::FlexFlow,
style::Selector,
view::{NavAction, View},
widgets::{Obj, Child, Label, Msgbox, Slider, WidgetError},
};
#[derive(Default)]
struct WidgetMsgbox2 {
_mbox: Option<Msgbox<'static>>,
_lbl_bright: Option<Child<Label<'static>>>,
_slider_bright: Option<Child<Slider<'static>>>,
_lbl_speed: Option<Child<Label<'static>>>,
_slider_speed: Option<Child<Slider<'static>>>,
}
impl View for WidgetMsgbox2 {
fn create(&mut self, container: &Obj<'static>) -> Result<(), WidgetError> {
let mbox = Msgbox::new(Some(container))?;
mbox.size(300, 200);
mbox.center();
mbox.style_clip_corner(true, Selector::DEFAULT);
mbox.add_title("Settings");
mbox.add_header_button(&oxivgl::symbols::MINUS);
mbox.add_close_button();
let content = mbox.get_content();
content.set_flex_flow(FlexFlow::Column);
content.pad(10);
let lbl_bright = Label::new(&*content)?;
lbl_bright.text("Brightness");
let lbl_bright = Child::new(lbl_bright);
let slider_bright = Slider::new(&*content)?;
slider_bright.width(250);
slider_bright.set_value(70);
let slider_bright = Child::new(slider_bright);
let lbl_speed = Label::new(&*content)?;
lbl_speed.text("Speed");
let lbl_speed = Child::new(lbl_speed);
let slider_speed = Slider::new(&*content)?;
slider_speed.width(250);
slider_speed.set_value(40);
let slider_speed = Child::new(slider_speed);
let btn_apply = mbox.add_footer_button("Apply");
btn_apply.set_flex_grow(1);
let btn_cancel = mbox.add_footer_button("Cancel");
btn_cancel.set_flex_grow(1);
let footer = mbox.get_footer().expect("footer exists after add_footer_button");
let indigo = oxivgl::style::palette_main(oxivgl::style::Palette::Indigo);
footer.style_bg_color(indigo, Selector::DEFAULT);
footer.bg_opa(255);
self._mbox = Some(mbox);
self._lbl_bright = Some(lbl_bright);
self._slider_bright = Some(slider_bright);
self._lbl_speed = Some(lbl_speed);
self._slider_speed = Some(slider_speed);
Ok(())
}
fn update(&mut self) -> Result<NavAction, WidgetError> {
Ok(NavAction::None)
}
}
oxivgl_examples_common::example_main!(WidgetMsgbox2::default());