Should work now, needs testing

This commit is contained in:
sebgab 2023-02-06 11:09:34 +01:00
parent a8ad1d5c76
commit d9aae15559

View File

@ -45,13 +45,17 @@ struct LightingMessage {
} }
*/ */
struct SliderValues {
slider_r: u8,
slider_g: u8,
slider_b: u8
}
struct MainPage { struct MainPage {
red: u8,
green: u8,
blue: u8,
config: KeyboardConfig, config: KeyboardConfig,
btn_appearance: iced::widget::button::Appearance, btn_appearance: iced::widget::button::Appearance,
btn_size: u16 btn_size: u16,
slider_values: SliderValues,
} }
#[derive(Debug, Clone, Copy)] #[derive(Debug, Clone, Copy)]
@ -59,7 +63,10 @@ enum MainPageMessages {
UpdateColor { UpdateColor {
row: u8, row: u8,
col: u8 col: u8
} },
UpdatedSlider_R(u8),
UpdatedSlider_G(u8),
UpdatedSlider_B(u8)
} }
@ -126,6 +133,8 @@ fn main() -> Result<(), iced::Error> {
// USB Code // USB Code
fn send_lighting_update(col: u8, row: u8, r: u8, g: u8, b: u8, _a: u8) { fn send_lighting_update(col: u8, row: u8, r: u8, g: u8, b: u8, _a: u8) {
println!("Sending lighting update!");
let config: KeyboardConfig = parse_config(&Path::new("numpad_config.json")); let config: KeyboardConfig = parse_config(&Path::new("numpad_config.json"));
let context = libusb::Context::new().unwrap(); // Get a new USB context let context = libusb::Context::new().unwrap(); // Get a new USB context
@ -168,7 +177,6 @@ impl Sandbox for MainPage {
fn new() -> Self { fn new() -> Self {
println!("Creating UI"); println!("Creating UI");
MainPage { MainPage {
red: 0, green: 0, blue: 0,
config: parse_config(&Path::new("numpad_config.json")), config: parse_config(&Path::new("numpad_config.json")),
btn_appearance: iced::widget::button::Appearance { btn_appearance: iced::widget::button::Appearance {
shadow_offset: Vector { shadow_offset: Vector {
@ -181,7 +189,8 @@ impl Sandbox for MainPage {
border_color: iced::Color::from_rgb8(0xFF, 0xFF, 0xFF), border_color: iced::Color::from_rgb8(0xFF, 0xFF, 0xFF),
text_color: iced::Color::from_rgb8(0xFF, 0xFF, 0xFF) text_color: iced::Color::from_rgb8(0xFF, 0xFF, 0xFF)
}, },
btn_size: 150 btn_size: 150,
slider_values: SliderValues { slider_r: 0, slider_g: 0, slider_b: 0 },
} }
} }
@ -190,7 +199,17 @@ impl Sandbox for MainPage {
} }
fn update(&mut self, message: Self::Message) { fn update(&mut self, message: Self::Message) {
println!("New message: {:?}", message); match message {
MainPageMessages::UpdatedSlider_R(value) => { self.slider_values.slider_r = value; }
MainPageMessages::UpdatedSlider_G(value) => { self.slider_values.slider_g = value; }
MainPageMessages::UpdatedSlider_B(value) => { self.slider_values.slider_b = value; }
MainPageMessages::UpdateColor { row, col } => {
println!("{:?}", message);
send_lighting_update(col, row, self.slider_values.slider_r, self.slider_values.slider_g, self.slider_values.slider_b, 0x0);
}
_ => { println!("New message: {:?}", message); }
}
} }
fn view(&self) -> iced::Element<'_, Self::Message> { fn view(&self) -> iced::Element<'_, Self::Message> {
@ -264,9 +283,13 @@ impl Sandbox for MainPage {
// Create the color selector // Create the color selector
let slider_r = Slider::new(); let slider_r = Slider::new(0..=255, self.slider_values.slider_r, MainPageMessages::UpdatedSlider_R);
let slider_g = Slider::new(0..=255, self.slider_values.slider_g, MainPageMessages::UpdatedSlider_G);
let slider_b = Slider::new(0..=255, self.slider_values.slider_b, MainPageMessages::UpdatedSlider_B);
let color_selector_col = Column::new() let color_selector_col = Column::new()
.push(slider_r) .push(slider_r)
.push(slider_g)
.push(slider_b)
.height(iced::Length::Fill).width(iced::Length::Fill); .height(iced::Length::Fill).width(iced::Length::Fill);
let view_row = Row::new().height(iced::Length::Fill).width(iced::Length::Fill) let view_row = Row::new().height(iced::Length::Fill).width(iced::Length::Fill)