From d9aae155595ddbac7afc2abc19bb0ec03aac18b1 Mon Sep 17 00:00:00 2001 From: sebgab Date: Mon, 6 Feb 2023 11:09:34 +0100 Subject: [PATCH] Should work now, needs testing --- src/main.rs | 41 ++++++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/src/main.rs b/src/main.rs index 9e0723f..e3f000a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -45,13 +45,17 @@ struct LightingMessage { } */ +struct SliderValues { + slider_r: u8, + slider_g: u8, + slider_b: u8 +} + struct MainPage { - red: u8, - green: u8, - blue: u8, config: KeyboardConfig, btn_appearance: iced::widget::button::Appearance, - btn_size: u16 + btn_size: u16, + slider_values: SliderValues, } #[derive(Debug, Clone, Copy)] @@ -59,7 +63,10 @@ enum MainPageMessages { UpdateColor { row: u8, col: u8 - } + }, + UpdatedSlider_R(u8), + UpdatedSlider_G(u8), + UpdatedSlider_B(u8) } @@ -126,6 +133,8 @@ fn main() -> Result<(), iced::Error> { // USB Code 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 context = libusb::Context::new().unwrap(); // Get a new USB context @@ -168,7 +177,6 @@ impl Sandbox for MainPage { fn new() -> Self { println!("Creating UI"); MainPage { - red: 0, green: 0, blue: 0, config: parse_config(&Path::new("numpad_config.json")), btn_appearance: iced::widget::button::Appearance { shadow_offset: Vector { @@ -181,7 +189,8 @@ impl Sandbox for MainPage { border_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) { - 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> { @@ -264,9 +283,13 @@ impl Sandbox for MainPage { // 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() .push(slider_r) + .push(slider_g) + .push(slider_b) .height(iced::Length::Fill).width(iced::Length::Fill); let view_row = Row::new().height(iced::Length::Fill).width(iced::Length::Fill)