From bf71cee7d05be85b4c6f9e491cb33494052a4f88 Mon Sep 17 00:00:00 2001 From: Avii Date: Sun, 9 Aug 2026 12:49:53 +0200 Subject: [PATCH] 1786272593 --- dashboard/src/main.rs | 18 +++++++++++++++++- dashboard/ui/main.slint | 9 ++------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/dashboard/src/main.rs b/dashboard/src/main.rs index 6cf46ae..5de938b 100644 --- a/dashboard/src/main.rs +++ b/dashboard/src/main.rs @@ -5,13 +5,29 @@ use std::sync::{Arc, RwLock}; use dotenvy::var; use hass_rs::{HassClient, HassEntity}; use serde_json::{Value, json}; +use slint::language::ColorScheme; use slint::{ModelRc, VecModel, Weak}; use tokio::sync::mpsc::{self, UnboundedReceiver, UnboundedSender}; - slint::include_modules!(); fn apply_state(app: &Weak, state: State) { app.upgrade_in_event_loop(move |app| { + // Light/Dark mode + // + if let Some(illuminance) = state + .get("sensor.living_room_motion_sensor_illuminance") + .as_ref() + && let Ok(illuminance) = illuminance.state.parse::() + { + let scheme = if illuminance < 100 { + ColorScheme::Dark + } else { + ColorScheme::Light + }; + + app.set_color_scheme(scheme); + } + // Lights let lights = state .domain("light") diff --git a/dashboard/ui/main.slint b/dashboard/ui/main.slint index 062905e..b81ed21 100644 --- a/dashboard/ui/main.slint +++ b/dashboard/ui/main.slint @@ -44,12 +44,6 @@ export struct DateTimeData { component Clock { in property date-time; - TouchArea { - clicked => { - Palette.color-scheme = Palette.color-scheme == ColorScheme.dark ? ColorScheme.light : ColorScheme.dark; - } - } - VerticalLayout { alignment: center; padding-left: 5px; @@ -129,8 +123,9 @@ export component AppWindow inherits Window { height: 600px; default-font-size: 16px; - in property date-time; + in-out property color-scheme <=> Palette.color-scheme; + in property date-time; in property <[ThermostatData]> thermostats; in property weather; in property is-night;