diff --git a/Cargo.lock b/Cargo.lock index def56576..8bb9cbcb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -587,9 +587,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.15.3" +version = "3.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea184aa71bb362a1157c896979544cc23974e08fd265f29ea96b59f0b4a555b" +checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" [[package]] name = "by_address" @@ -663,9 +663,9 @@ checksum = "7b02b629252fe8ef6460461409564e2c21d0c8e77e0944f3d189ff06c4e932ad" [[package]] name = "cc" -version = "1.0.89" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0ba8f7aaa012f30d5b2861462f6708eccd49c3c39863fe083a308035f63d723" +checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" dependencies = [ "jobserver", "libc", @@ -715,9 +715,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.34" +version = "0.4.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b" +checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a" dependencies = [ "android-tzdata", "iana-time-zone", @@ -851,7 +851,7 @@ dependencies = [ [[package]] name = "const-field-offset" version = "0.1.4" -source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#f7ed950652302eca33f33e94a3bc503d710b4127" +source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#02ff8f5fcb15c6c7683d976f509cf134cdb3ed45" dependencies = [ "const-field-offset-macro", "field-offset", @@ -860,7 +860,7 @@ dependencies = [ [[package]] name = "const-field-offset-macro" version = "0.1.4" -source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#f7ed950652302eca33f33e94a3bc503d710b4127" +source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#02ff8f5fcb15c6c7683d976f509cf134cdb3ed45" dependencies = [ "proc-macro2", "quote", @@ -1928,7 +1928,7 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "i-slint-backend-linuxkms" version = "1.5.0" -source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#f7ed950652302eca33f33e94a3bc503d710b4127" +source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#02ff8f5fcb15c6c7683d976f509cf134cdb3ed45" dependencies = [ "calloop", "drm", @@ -1948,7 +1948,7 @@ dependencies = [ [[package]] name = "i-slint-backend-qt" version = "1.5.0" -source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#f7ed950652302eca33f33e94a3bc503d710b4127" +source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#02ff8f5fcb15c6c7683d976f509cf134cdb3ed45" dependencies = [ "const-field-offset", "i-slint-common", @@ -1960,7 +1960,7 @@ dependencies = [ [[package]] name = "i-slint-backend-selector" version = "1.5.0" -source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#f7ed950652302eca33f33e94a3bc503d710b4127" +source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#02ff8f5fcb15c6c7683d976f509cf134cdb3ed45" dependencies = [ "cfg-if", "i-slint-backend-linuxkms", @@ -1973,7 +1973,7 @@ dependencies = [ [[package]] name = "i-slint-backend-winit" version = "1.5.0" -source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#f7ed950652302eca33f33e94a3bc503d710b4127" +source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#02ff8f5fcb15c6c7683d976f509cf134cdb3ed45" dependencies = [ "bytemuck", "cfg-if", @@ -2006,7 +2006,7 @@ dependencies = [ [[package]] name = "i-slint-common" version = "1.5.0" -source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#f7ed950652302eca33f33e94a3bc503d710b4127" +source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#02ff8f5fcb15c6c7683d976f509cf134cdb3ed45" dependencies = [ "cfg-if", "derive_more", @@ -2017,7 +2017,7 @@ dependencies = [ [[package]] name = "i-slint-compiler" version = "1.5.0" -source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#f7ed950652302eca33f33e94a3bc503d710b4127" +source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#02ff8f5fcb15c6c7683d976f509cf134cdb3ed45" dependencies = [ "by_address", "codemap", @@ -2046,7 +2046,7 @@ dependencies = [ [[package]] name = "i-slint-core" version = "1.5.0" -source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#f7ed950652302eca33f33e94a3bc503d710b4127" +source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#02ff8f5fcb15c6c7683d976f509cf134cdb3ed45" dependencies = [ "auto_enums", "bytemuck", @@ -2090,7 +2090,7 @@ dependencies = [ [[package]] name = "i-slint-core-macros" version = "1.5.0" -source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#f7ed950652302eca33f33e94a3bc503d710b4127" +source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#02ff8f5fcb15c6c7683d976f509cf134cdb3ed45" dependencies = [ "quote", "syn 2.0.52", @@ -2099,7 +2099,7 @@ dependencies = [ [[package]] name = "i-slint-renderer-femtovg" version = "1.5.0" -source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#f7ed950652302eca33f33e94a3bc503d710b4127" +source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#02ff8f5fcb15c6c7683d976f509cf134cdb3ed45" dependencies = [ "cfg-if", "const-field-offset", @@ -2130,7 +2130,7 @@ dependencies = [ [[package]] name = "i-slint-renderer-skia" version = "1.5.0" -source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#f7ed950652302eca33f33e94a3bc503d710b4127" +source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#02ff8f5fcb15c6c7683d976f509cf134cdb3ed45" dependencies = [ "bytemuck", "cfg-if", @@ -3883,7 +3883,7 @@ dependencies = [ [[package]] name = "slint" version = "1.5.0" -source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#f7ed950652302eca33f33e94a3bc503d710b4127" +source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#02ff8f5fcb15c6c7683d976f509cf134cdb3ed45" dependencies = [ "const-field-offset", "i-slint-backend-selector", @@ -3899,7 +3899,7 @@ dependencies = [ [[package]] name = "slint-build" version = "1.5.0" -source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#f7ed950652302eca33f33e94a3bc503d710b4127" +source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#02ff8f5fcb15c6c7683d976f509cf134cdb3ed45" dependencies = [ "i-slint-compiler", "spin_on", @@ -3910,7 +3910,7 @@ dependencies = [ [[package]] name = "slint-macros" version = "1.5.0" -source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#f7ed950652302eca33f33e94a3bc503d710b4127" +source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#02ff8f5fcb15c6c7683d976f509cf134cdb3ed45" dependencies = [ "i-slint-compiler", "proc-macro2", @@ -4684,7 +4684,7 @@ dependencies = [ [[package]] name = "vtable" version = "0.2.0" -source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#f7ed950652302eca33f33e94a3bc503d710b4127" +source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#02ff8f5fcb15c6c7683d976f509cf134cdb3ed45" dependencies = [ "const-field-offset", "portable-atomic", @@ -4695,7 +4695,7 @@ dependencies = [ [[package]] name = "vtable-macro" version = "0.2.0" -source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#f7ed950652302eca33f33e94a3bc503d710b4127" +source = "git+https://github.com/flukejones/sixtyfps.git?branch=asusctl#02ff8f5fcb15c6c7683d976f509cf134cdb3ed45" dependencies = [ "proc-macro2", "quote", @@ -5225,9 +5225,9 @@ checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" [[package]] name = "winit" -version = "0.29.13" +version = "0.29.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b9d7047a2a569d5a81e3be098dcd8153759909b127477f4397e03cf1006d90a" +checksum = "a7a3db69ffbe53a9babec7804da7a90f21020fcce1f2f5e5291e2311245b993d" dependencies = [ "ahash", "android-activity", diff --git a/asusctl/src/main.rs b/asusctl/src/main.rs index 83befc93..5fc58cb6 100644 --- a/asusctl/src/main.rs +++ b/asusctl/src/main.rs @@ -560,13 +560,7 @@ fn handle_led_power_1_do_1866( old_rog: enabled, ..Default::default() }; - dbus.proxies().aura().set_led_power((data, true))?; - - let data = AuraPowerDev { - old_rog: disabled, - ..Default::default() - }; - dbus.proxies().aura().set_led_power((data, false))?; + dbus.proxies().aura().set_led_power(data)?; // TODO: verify this Ok(()) } @@ -597,13 +591,7 @@ fn handle_led_power_1_do_tuf( tuf: enabled, ..Default::default() }; - dbus.proxies().aura().set_led_power((data, true))?; - - let data = AuraPowerDev { - tuf: disabled, - ..Default::default() - }; - dbus.proxies().aura().set_led_power((data, false))?; + dbus.proxies().aura().set_led_power(data)?; // TODO: verify this Ok(()) } @@ -664,7 +652,7 @@ fn handle_led_power2( } } - dbus.proxies().aura().set_led_power((enabled, true))?; + dbus.proxies().aura().set_led_power(enabled)?; } Ok(()) diff --git a/asusd/src/ctrl_aura/trait_impls.rs b/asusd/src/ctrl_aura/trait_impls.rs index d6ffe64e..25042ad7 100644 --- a/asusd/src/ctrl_aura/trait_impls.rs +++ b/asusd/src/ctrl_aura/trait_impls.rs @@ -186,16 +186,15 @@ impl CtrlAuraZbus { /// /// For Modern ROG devices the "enabled" flag is ignored. #[zbus(property)] - async fn set_led_power(&mut self, options: (AuraPowerDev, bool)) -> Result<(), ZbErr> { - let enabled = options.1; - let options = options.0; + async fn set_led_power(&mut self, options: AuraPowerDev) -> Result<(), ZbErr> { let mut ctrl = self.0.lock().await; - for p in options.tuf { - ctrl.config.enabled.set_tuf(p, enabled); - } - for p in options.old_rog { - ctrl.config.enabled.set_0x1866(p, enabled); - } + // TODO: set the older devices + // for p in options.tuf { + // ctrl.config.enabled.set_tuf(p, enabled); + // } + // for p in options.old_rog { + // ctrl.config.enabled.set_0x1866(p, enabled); + // } ctrl.config.enabled.set_0x19b6(options.rog); ctrl.config.write(); Ok(ctrl.set_power_states().map_err(|e| { diff --git a/rog-control-center/src/ui_setup.rs b/rog-control-center/src/ui_setup.rs index 32bf93c3..30e033b4 100644 --- a/rog-control-center/src/ui_setup.rs +++ b/rog-control-center/src/ui_setup.rs @@ -2,11 +2,13 @@ use std::sync::{Arc, Mutex}; use config_traits::StdConfig; use rog_anime::Animations; +use rog_aura::power::KbAuraPowerState; +use rog_aura::usb::AuraPowerDev; use rog_dbus::zbus_anime::AnimeProxy; use rog_dbus::zbus_aura::AuraProxy; use rog_dbus::zbus_platform::{PlatformProxy, PlatformProxyBlocking}; use rog_platform::platform::Properties; -use slint::{ComponentHandle, Model, RgbaColor, SharedString, Weak}; +use slint::{ComponentHandle, Model, ModelRc, RgbaColor, SharedString, Weak}; use zbus::proxy::CacheProperties; use crate::config::Config; @@ -63,6 +65,207 @@ impl From for rog_aura::AuraEffect } } +use crate::slint_generatedMainWindow::AuraDevTuf as SlintAuraDevTuf; +impl From for SlintAuraDevTuf { + fn from(value: rog_aura::usb::AuraDevTuf) -> Self { + match value { + rog_aura::usb::AuraDevTuf::Boot => SlintAuraDevTuf::Boot, + rog_aura::usb::AuraDevTuf::Awake => SlintAuraDevTuf::Awake, + rog_aura::usb::AuraDevTuf::Sleep => SlintAuraDevTuf::Sleep, + rog_aura::usb::AuraDevTuf::Keyboard => SlintAuraDevTuf::Keyboard, + } + } +} + +impl From for rog_aura::usb::AuraDevTuf { + fn from(value: SlintAuraDevTuf) -> Self { + match value { + SlintAuraDevTuf::Boot => rog_aura::usb::AuraDevTuf::Boot, + SlintAuraDevTuf::Awake => rog_aura::usb::AuraDevTuf::Awake, + SlintAuraDevTuf::Sleep => rog_aura::usb::AuraDevTuf::Sleep, + SlintAuraDevTuf::Keyboard => rog_aura::usb::AuraDevTuf::Keyboard, + } + } +} + +use crate::slint_generatedMainWindow::AuraDevRog1 as SlintAuraDevRog1; +impl From for SlintAuraDevRog1 { + fn from(value: rog_aura::usb::AuraDevRog1) -> Self { + match value { + rog_aura::usb::AuraDevRog1::Awake => SlintAuraDevRog1::Awake, + rog_aura::usb::AuraDevRog1::Keyboard => SlintAuraDevRog1::Keyboard, + rog_aura::usb::AuraDevRog1::Lightbar => SlintAuraDevRog1::Lightbar, + rog_aura::usb::AuraDevRog1::Boot => SlintAuraDevRog1::Boot, + rog_aura::usb::AuraDevRog1::Sleep => SlintAuraDevRog1::Sleep, + } + } +} + +impl From for rog_aura::usb::AuraDevRog1 { + fn from(value: SlintAuraDevRog1) -> Self { + match value { + SlintAuraDevRog1::Awake => rog_aura::usb::AuraDevRog1::Awake, + SlintAuraDevRog1::Keyboard => rog_aura::usb::AuraDevRog1::Keyboard, + SlintAuraDevRog1::Lightbar => rog_aura::usb::AuraDevRog1::Lightbar, + SlintAuraDevRog1::Boot => rog_aura::usb::AuraDevRog1::Boot, + SlintAuraDevRog1::Sleep => rog_aura::usb::AuraDevRog1::Sleep, + } + } +} + +use crate::slint_generatedMainWindow::PowerZones as SlintPowerZones; +impl From for SlintPowerZones { + fn from(value: rog_aura::aura_detection::PowerZones) -> Self { + match value { + rog_aura::aura_detection::PowerZones::Logo => SlintPowerZones::Logo, + rog_aura::aura_detection::PowerZones::Keyboard => SlintPowerZones::Keyboard, + rog_aura::aura_detection::PowerZones::Lightbar => SlintPowerZones::Lightbar, + rog_aura::aura_detection::PowerZones::Lid => SlintPowerZones::Lid, + rog_aura::aura_detection::PowerZones::RearGlow => SlintPowerZones::RearGlow, + } + } +} + +impl From for rog_aura::aura_detection::PowerZones { + fn from(value: SlintPowerZones) -> Self { + match value { + SlintPowerZones::Logo => rog_aura::aura_detection::PowerZones::Logo, + SlintPowerZones::Keyboard => rog_aura::aura_detection::PowerZones::Keyboard, + SlintPowerZones::Lightbar => rog_aura::aura_detection::PowerZones::Lightbar, + SlintPowerZones::Lid => rog_aura::aura_detection::PowerZones::Lid, + SlintPowerZones::RearGlow => rog_aura::aura_detection::PowerZones::RearGlow, + } + } +} + +use crate::slint_generatedMainWindow::{ + AuraPower as SlintAuraPower, KbAuraPowerState as SlintKbAuraPowerState, +}; +impl From for SlintAuraPower { + fn from(value: rog_aura::power::AuraPower) -> Self { + Self { + keyboard: SlintKbAuraPowerState { + awake: value.keyboard.awake, + boot: value.keyboard.boot, + shutdown: value.keyboard.shutdown, + sleep: value.keyboard.sleep, + zone: value.keyboard.zone.into(), + }, + lid: SlintKbAuraPowerState { + awake: value.lid.awake, + boot: value.lid.boot, + shutdown: value.lid.shutdown, + sleep: value.lid.sleep, + zone: value.lid.zone.into(), + }, + lightbar: SlintKbAuraPowerState { + awake: value.lightbar.awake, + boot: value.lightbar.boot, + shutdown: value.lightbar.shutdown, + sleep: value.lightbar.sleep, + zone: value.lightbar.zone.into(), + }, + logo: SlintKbAuraPowerState { + awake: value.logo.awake, + boot: value.logo.boot, + shutdown: value.logo.shutdown, + sleep: value.logo.sleep, + zone: value.logo.zone.into(), + }, + rear_glow: SlintKbAuraPowerState { + awake: value.rear_glow.awake, + boot: value.rear_glow.boot, + shutdown: value.rear_glow.shutdown, + sleep: value.rear_glow.sleep, + zone: value.rear_glow.zone.into(), + }, + } + } +} + +impl From for rog_aura::power::AuraPower { + fn from(value: SlintAuraPower) -> Self { + Self { + keyboard: KbAuraPowerState { + awake: value.keyboard.awake, + boot: value.keyboard.boot, + shutdown: value.keyboard.shutdown, + sleep: value.keyboard.sleep, + zone: value.keyboard.zone.into(), + }, + lid: KbAuraPowerState { + awake: value.lid.awake, + boot: value.lid.boot, + shutdown: value.lid.shutdown, + sleep: value.lid.sleep, + zone: value.lid.zone.into(), + }, + lightbar: KbAuraPowerState { + awake: value.lightbar.awake, + boot: value.lightbar.boot, + shutdown: value.lightbar.shutdown, + sleep: value.lightbar.sleep, + zone: value.lightbar.zone.into(), + }, + logo: KbAuraPowerState { + awake: value.logo.awake, + boot: value.logo.boot, + shutdown: value.logo.shutdown, + sleep: value.logo.sleep, + zone: value.logo.zone.into(), + }, + rear_glow: KbAuraPowerState { + awake: value.rear_glow.awake, + boot: value.rear_glow.boot, + shutdown: value.rear_glow.shutdown, + sleep: value.rear_glow.sleep, + zone: value.rear_glow.zone.into(), + }, + } + } +} + +use crate::slint_generatedMainWindow::AuraPowerDev as SlintAuraPowerDev; +impl From for SlintAuraPowerDev { + fn from(value: rog_aura::usb::AuraPowerDev) -> Self { + let tuf: Vec = value + .tuf + .iter() + .map(|n| SlintAuraDevTuf::from(*n)) + .collect(); + let old_rog: Vec = value + .old_rog + .iter() + .map(|n| SlintAuraDevRog1::from(*n)) + .collect(); + Self { + tuf: ModelRc::from(tuf.as_slice()), + old_rog: ModelRc::from(old_rog.as_slice()), + rog: value.rog.into(), + } + } +} + +impl From for rog_aura::usb::AuraPowerDev { + fn from(value: SlintAuraPowerDev) -> Self { + let tuf: Vec = value + .tuf + .iter() + .map(|n| rog_aura::usb::AuraDevTuf::from(n)) + .collect(); + let old_rog: Vec = value + .old_rog + .iter() + .map(|n| rog_aura::usb::AuraDevRog1::from(n)) + .collect(); + Self { + tuf, + old_rog, + rog: value.rog.into(), + } + } +} + // This macro expects are consistent naming between proxy calls and slint // globals macro_rules! set_ui_props_async { @@ -429,6 +632,19 @@ fn setup_aura_page(ui: &MainWindow, _states: Arc>) { set_ui_props_async!(handle, aura, AuraPageData, brightness); set_ui_props_async!(handle, aura, AuraPageData, led_mode); set_ui_props_async!(handle, aura, AuraPageData, led_mode_data); + set_ui_props_async!(handle, aura, AuraPageData, led_power); + + if let Ok(power) = aura.supported_power_zones().await { + log::debug!("Available LED power modes {power:?}"); + let power: Vec = power.iter().map(|p| (*p).into()).collect(); + handle + .upgrade_in_event_loop(move |handle| { + handle + .global::() + .set_supported_power_zones(power.as_slice().into()); + }) + .ok(); + } if let Ok(modes) = aura.supported_basic_modes().await { log::debug!("Available LED modes {modes:?}"); @@ -459,29 +675,58 @@ fn setup_aura_page(ui: &MainWindow, _states: Arc>) { .upgrade_in_event_loop(move |handle| { set_ui_callbacks!(handle, AuraPageData(.into()), - aura.brightness(.into()), + proxy_copy.brightness(.into()), "Keyboard LED brightness successfully set to {}", "Setting keyboard LED brightness failed" ); set_ui_callbacks!(handle, AuraPageData(.into()), - aura.led_mode(.into()), + proxy_copy.led_mode(.into()), "Keyboard LED mode successfully set to {}", "Setting keyboard LEDmode failed" ); set_ui_callbacks!(handle, AuraPageData(.into()), - aura.led_mode_data(.into()), + proxy_copy.led_mode_data(.into()), "Keyboard LED mode set to {:?}", "Setting keyboard LED mode failed" ); + // set_ui_callbacks!(handle, + // AuraPageData(.clone().into()), + // proxy_copy.led_power(.into()), + // "Keyboard LED power successfully set to {:?}", + // "Setting keyboard power failed" + // ); + handle.invoke_external_colour_change(); }) .ok(); + let handle_copy = handle.clone(); + let proxy_copy = aura.clone(); + handle + .upgrade_in_event_loop(|handle| { + handle + .global::() + .on_set_led_power(move |power| { + let handle_copy = handle_copy.clone(); + let proxy_copy = aura.clone(); + let power: AuraPowerDev = power.into(); + tokio::spawn(async move { + show_toast( + "Anime builtin animations changed".into(), + "Failed to set Anime builtin animations".into(), + handle_copy, + proxy_copy.set_led_power(power.into()).await, + ); + }); + }); + }) + .unwrap(); + // Need to update the UI if the mode changes let handle_copy = handle.clone(); // spawn required since the while let never exits diff --git a/rog-control-center/translations/en/rog-control-center.po b/rog-control-center/translations/en/rog-control-center.po index e3900e27..a61acc99 100644 --- a/rog-control-center/translations/en/rog-control-center.po +++ b/rog-control-center/translations/en/rog-control-center.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2024-03-06 09:35+0000\n" +"POT-Creation-Date: 2024-03-09 08:00+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -157,204 +157,94 @@ msgctxt "PageAppSettings" msgid "Enable change notifications" msgstr "" -#: rog-control-center/ui/pages/aura.slint:24 -msgctxt "Aura brightness" -msgid "Off" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:25 -msgctxt "Aura brightness" -msgid "Low" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:26 -msgctxt "Aura brightness" -msgid "Med" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:27 -msgctxt "Aura brightness" -msgid "High" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:32 rog-control-center/ui/pages/aura.slint:47 -msgctxt "Basic aura mode" -msgid "Static" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:33 rog-control-center/ui/pages/aura.slint:48 -msgctxt "Basic aura mode" -msgid "Breathe" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:34 rog-control-center/ui/pages/aura.slint:49 -msgctxt "Basic aura mode" -msgid "Strobe" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:35 -msgctxt "Basic aura mode" -msgid "Rainbow" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:36 -msgctxt "Basic aura mode" -msgid "Star" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:37 -msgctxt "Basic aura mode" -msgid "Rain" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:38 -msgctxt "Basic aura mode" -msgid "Highlight" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:39 -msgctxt "Basic aura mode" -msgid "Laser" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:40 -msgctxt "Basic aura mode" -msgid "Ripple" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:41 -msgctxt "Basic aura mode" -msgid "Nothing" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:42 -msgctxt "Basic aura mode" -msgid "Pulse" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:43 -msgctxt "Basic aura mode" -msgid "Comet" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:44 -msgctxt "Basic aura mode" -msgid "Flash" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:56 -msgctxt "Aura zone" -msgid "None" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:57 -msgctxt "Aura zone" -msgid "Key1" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:58 -msgctxt "Aura zone" -msgid "Key2" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:59 -msgctxt "Aura zone" -msgid "Key3" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:60 -msgctxt "Aura zone" -msgid "Key4" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:61 -msgctxt "Aura zone" -msgid "Logo" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:62 -msgctxt "Aura zone" -msgid "Lightbar Left" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:63 -msgctxt "Aura zone" -msgid "Lightbar Right" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:67 -msgctxt "Aura direction" -msgid "Right" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:68 -msgctxt "Aura direction" -msgid "Left" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:69 -msgctxt "Aura direction" -msgid "Up" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:70 -msgctxt "Aura direction" -msgid "Down" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:74 -msgctxt "Aura speed" -msgid "Low" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:75 -msgctxt "Aura speed" -msgid "Medium" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:76 -msgctxt "Aura speed" -msgid "High" -msgstr "" - -#: rog-control-center/ui/pages/aura.slint:128 +#: rog-control-center/ui/pages/aura.slint:29 msgctxt "PageAura" msgid "Brightness" msgstr "" -#: rog-control-center/ui/pages/aura.slint:139 +#: rog-control-center/ui/pages/aura.slint:40 msgctxt "PageAura" msgid "Aura mode" msgstr "" -#: rog-control-center/ui/pages/aura.slint:156 +#: rog-control-center/ui/pages/aura.slint:57 msgctxt "PageAura" msgid "Colour 1" msgstr "" -#: rog-control-center/ui/pages/aura.slint:177 +#: rog-control-center/ui/pages/aura.slint:78 msgctxt "PageAura" msgid "Colour 2" msgstr "" -#: rog-control-center/ui/pages/aura.slint:204 +#: rog-control-center/ui/pages/aura.slint:105 msgctxt "PageAura" msgid "Zone" msgstr "" -#: rog-control-center/ui/pages/aura.slint:224 +#: rog-control-center/ui/pages/aura.slint:125 msgctxt "PageAura" msgid "Direction" msgstr "" -#: rog-control-center/ui/pages/aura.slint:244 +#: rog-control-center/ui/pages/aura.slint:145 msgctxt "PageAura" msgid "Speed" msgstr "" -#: rog-control-center/ui/pages/aura.slint:262 +#: rog-control-center/ui/pages/aura.slint:164 msgctxt "PageAura" -msgid "Apply" +msgid "Power Settings" +msgstr "" + +#: rog-control-center/ui/pages/aura.slint:172 +msgctxt "PageAura" +msgid "Apply Aura" +msgstr "" + +#: rog-control-center/ui/pages/aura.slint:213 rog-control-center/ui/pages/aura.slint:421 rog-control-center/ui/pages/aura.slint:481 +msgctxt "PageAura" +msgid "Keyboard" +msgstr "" + +#: rog-control-center/ui/pages/aura.slint:219 rog-control-center/ui/pages/aura.slint:256 rog-control-center/ui/pages/aura.slint:293 rog-control-center/ui/pages/aura.slint:330 rog-control-center/ui/pages/aura.slint:367 rog-control-center/ui/pages/aura.slint:427 rog-control-center/ui/pages/aura.slint:487 +msgctxt "PageAura" +msgid "Boot" +msgstr "" + +#: rog-control-center/ui/pages/aura.slint:224 rog-control-center/ui/pages/aura.slint:261 rog-control-center/ui/pages/aura.slint:298 rog-control-center/ui/pages/aura.slint:335 rog-control-center/ui/pages/aura.slint:372 rog-control-center/ui/pages/aura.slint:432 rog-control-center/ui/pages/aura.slint:492 +msgctxt "PageAura" +msgid "Awake" +msgstr "" + +#: rog-control-center/ui/pages/aura.slint:229 rog-control-center/ui/pages/aura.slint:266 rog-control-center/ui/pages/aura.slint:303 rog-control-center/ui/pages/aura.slint:340 rog-control-center/ui/pages/aura.slint:377 rog-control-center/ui/pages/aura.slint:437 rog-control-center/ui/pages/aura.slint:497 +msgctxt "PageAura" +msgid "Sleep" +msgstr "" + +#: rog-control-center/ui/pages/aura.slint:234 rog-control-center/ui/pages/aura.slint:271 rog-control-center/ui/pages/aura.slint:308 rog-control-center/ui/pages/aura.slint:345 rog-control-center/ui/pages/aura.slint:382 rog-control-center/ui/pages/aura.slint:442 rog-control-center/ui/pages/aura.slint:502 +msgctxt "PageAura" +msgid "Shutdown" +msgstr "" + +#: rog-control-center/ui/pages/aura.slint:250 +msgctxt "PageAura" +msgid "Lid Logo" +msgstr "" + +#: rog-control-center/ui/pages/aura.slint:287 +msgctxt "PageAura" +msgid "Lightbar" +msgstr "" + +#: rog-control-center/ui/pages/aura.slint:324 +msgctxt "PageAura" +msgid "Lid Zone" +msgstr "" + +#: rog-control-center/ui/pages/aura.slint:361 +msgctxt "PageAura" +msgid "Rear Glow" msgstr "" #: rog-control-center/ui/pages/system.slint:26 @@ -502,38 +392,198 @@ msgctxt "PageSystem" msgid "Throttle Policy on AC" msgstr "" -#: rog-control-center/ui/main_window.slint:43 +#: rog-control-center/ui/main_window.slint:45 msgctxt "MainWindow" msgid "ROG" msgstr "" -#: rog-control-center/ui/main_window.slint:45 +#: rog-control-center/ui/main_window.slint:47 msgctxt "Menu1" msgid "System Control" msgstr "" -#: rog-control-center/ui/main_window.slint:46 +#: rog-control-center/ui/main_window.slint:48 msgctxt "Menu2" msgid "Keyboard Aura" msgstr "" -#: rog-control-center/ui/main_window.slint:47 +#: rog-control-center/ui/main_window.slint:49 msgctxt "Menu3" msgid "AniMe Matrix" msgstr "" -#: rog-control-center/ui/main_window.slint:48 +#: rog-control-center/ui/main_window.slint:50 msgctxt "Menu4" msgid "Fan Curves" msgstr "" -#: rog-control-center/ui/main_window.slint:49 +#: rog-control-center/ui/main_window.slint:51 msgctxt "Menu5" msgid "App Settings" msgstr "" -#: rog-control-center/ui/main_window.slint:50 +#: rog-control-center/ui/main_window.slint:52 msgctxt "Menu6" msgid "About" msgstr "" +#: rog-control-center/ui/types/aura_types.slint:69 +msgctxt "Aura brightness" +msgid "Off" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:70 +msgctxt "Aura brightness" +msgid "Low" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:71 +msgctxt "Aura brightness" +msgid "Med" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:72 +msgctxt "Aura brightness" +msgid "High" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:77 rog-control-center/ui/types/aura_types.slint:92 +msgctxt "Basic aura mode" +msgid "Static" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:78 rog-control-center/ui/types/aura_types.slint:93 +msgctxt "Basic aura mode" +msgid "Breathe" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:79 rog-control-center/ui/types/aura_types.slint:94 +msgctxt "Basic aura mode" +msgid "Strobe" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:80 +msgctxt "Basic aura mode" +msgid "Rainbow" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:81 +msgctxt "Basic aura mode" +msgid "Star" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:82 +msgctxt "Basic aura mode" +msgid "Rain" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:83 +msgctxt "Basic aura mode" +msgid "Highlight" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:84 +msgctxt "Basic aura mode" +msgid "Laser" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:85 +msgctxt "Basic aura mode" +msgid "Ripple" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:86 +msgctxt "Basic aura mode" +msgid "Nothing" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:87 +msgctxt "Basic aura mode" +msgid "Pulse" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:88 +msgctxt "Basic aura mode" +msgid "Comet" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:89 +msgctxt "Basic aura mode" +msgid "Flash" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:101 +msgctxt "Aura zone" +msgid "None" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:102 +msgctxt "Aura zone" +msgid "Key1" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:103 +msgctxt "Aura zone" +msgid "Key2" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:104 +msgctxt "Aura zone" +msgid "Key3" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:105 +msgctxt "Aura zone" +msgid "Key4" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:106 +msgctxt "Aura zone" +msgid "Logo" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:107 +msgctxt "Aura zone" +msgid "Lightbar Left" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:108 +msgctxt "Aura zone" +msgid "Lightbar Right" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:112 +msgctxt "Aura direction" +msgid "Right" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:113 +msgctxt "Aura direction" +msgid "Left" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:114 +msgctxt "Aura direction" +msgid "Up" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:115 +msgctxt "Aura direction" +msgid "Down" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:119 +msgctxt "Aura speed" +msgid "Low" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:120 +msgctxt "Aura speed" +msgid "Medium" +msgstr "" + +#: rog-control-center/ui/types/aura_types.slint:121 +msgctxt "Aura speed" +msgid "High" +msgstr "" + diff --git a/rog-control-center/ui/main_window.slint b/rog-control-center/ui/main_window.slint index c248b530..9027a4de 100644 --- a/rog-control-center/ui/main_window.slint +++ b/rog-control-center/ui/main_window.slint @@ -5,14 +5,16 @@ import { SideBar } from "widgets/sidebar.slint"; import { PageAbout } from "pages/about.slint"; import { PageFans } from "pages/fans.slint"; import { PageAnime, AnimePageData } from "pages/anime.slint"; -import { PageAura, AuraPageData, AuraEffect } from "pages/aura.slint"; +import { PageAura } from "pages/aura.slint"; +import { AuraPageData, AuraDevType, AuraDevTuf, AuraDevRog1, PowerZones, KbAuraPowerState, AuraPowerDev, AuraEffect } from "types/aura_types.slint"; +export { AuraPageData, AuraDevType, AuraDevTuf, AuraDevRog1, PowerZones, KbAuraPowerState, AuraPowerDev, AuraEffect } import { PageAppSettings, AppSettingsPageData } from "pages/app_settings.slint"; -export { AppSize, AuraEffect, Theme, AvailableSystemProperties, SystemPageData, AuraPageData, AnimePageData, AppSettingsPageData } +export { AppSize, Theme, AvailableSystemProperties, SystemPageData, AnimePageData, AppSettingsPageData } export component MainWindow inherits Window { default-font-family: "DejaVu Sans"; - in property <[bool]> sidebar_items_avilable: [true, true, true, true, true, true]; + in property <[bool]> sidebar_items_avilable: [true, true, false, true, true, true]; private property show-notif; private property fade-cover; private property toast: false; diff --git a/rog-control-center/ui/pages/about.slint b/rog-control-center/ui/pages/about.slint index d8b797fd..b3cc64eb 100644 --- a/rog-control-center/ui/pages/about.slint +++ b/rog-control-center/ui/pages/about.slint @@ -1,4 +1,4 @@ -import { ValueBar } from "../common_widgets.slint"; +import { ValueBar } from "../widgets/common.slint"; import { Theme } from "../globals.slint"; import { AboutSlint } from "std-widgets.slint"; diff --git a/rog-control-center/ui/pages/anime.slint b/rog-control-center/ui/pages/anime.slint index a06cd1d2..c7d82181 100644 --- a/rog-control-center/ui/pages/anime.slint +++ b/rog-control-center/ui/pages/anime.slint @@ -1,5 +1,5 @@ import { Theme } from "../globals.slint"; -import { SystemDropdown, SystemToggle } from "../common_widgets.slint"; +import { SystemDropdown, SystemToggle } from "../widgets/common.slint"; import { GroupBox, VerticalBox, Button, HorizontalBox } from "std-widgets.slint"; export global AnimePageData { diff --git a/rog-control-center/ui/pages/app_settings.slint b/rog-control-center/ui/pages/app_settings.slint index 8f005823..51209a36 100644 --- a/rog-control-center/ui/pages/app_settings.slint +++ b/rog-control-center/ui/pages/app_settings.slint @@ -1,5 +1,5 @@ import { Theme } from "../globals.slint"; -import { SystemToggle } from "../common_widgets.slint"; +import { SystemToggle } from "../widgets/common.slint"; export global AppSettingsPageData { in-out property run_in_background; diff --git a/rog-control-center/ui/pages/aura.slint b/rog-control-center/ui/pages/aura.slint index 9cc6ff44..2eb1e104 100644 --- a/rog-control-center/ui/pages/aura.slint +++ b/rog-control-center/ui/pages/aura.slint @@ -1,270 +1,457 @@ -import { SystemDropdown, RogItem } from "../common_widgets.slint"; +import { SystemDropdown, RogItem, SystemToggle, SystemToggleVert } from "../widgets/common.slint"; import { Button, ComboBox, VerticalBox, GroupBox } from "std-widgets.slint"; -import { StyleMetrics, Slider, HorizontalBox, TextEdit, SpinBox, LineEdit } from "std-widgets.slint"; +import { StyleMetrics, Slider, HorizontalBox, TextEdit, SpinBox, LineEdit, ScrollView } from "std-widgets.slint"; import { ColorPicker, ColourSlider } from "../widgets/colour_picker.slint"; import { Theme } from "../globals.slint"; +import { AuraPageData, AuraDevType, AuraDevTuf, AuraDevRog1, PowerZones, KbAuraPowerState, AuraPowerDev, AuraEffect } from "../types/aura_types.slint"; +import { AuraPowerGroup } from "../widgets/aura_power.slint"; -export struct AuraEffect { - /// The effect type - mode: int, - /// `AuraZone::None` for no zone or zoneless keyboards - zone: int, - /// Primary colour for all modes - colour1: color, - /// Secondary colour in some modes like Breathing or Stars - colour2: color, - /// One of three speeds for modes that support speed (most that animate) - speed: int, - /// Up, down, left, right. Only Rainbow mode seems to use this - direction: int, -} +export component PageAura inherits Rectangle { + property show_fade_cover: false; + property show_aura_power: false; -export global AuraPageData { - in-out property <[string]> brightness_names: [ - @tr("Aura brightness" => "Off"), - @tr("Aura brightness" => "Low"), - @tr("Aura brightness" => "Med"), - @tr("Aura brightness" => "High"), - ]; - in-out property brightness; - callback set_brightness(int); - in-out property <[string]> mode_names: [ - @tr("Basic aura mode" => "Static"), - @tr("Basic aura mode" => "Breathe"), - @tr("Basic aura mode" => "Strobe"), - @tr("Basic aura mode" => "Rainbow"), - @tr("Basic aura mode" => "Star"), - @tr("Basic aura mode" => "Rain"), - @tr("Basic aura mode" => "Highlight"), - @tr("Basic aura mode" => "Laser"), - @tr("Basic aura mode" => "Ripple"), - @tr("Basic aura mode" => "Nothing"), - @tr("Basic aura mode" => "Pulse"), - @tr("Basic aura mode" => "Comet"), - @tr("Basic aura mode" => "Flash"), - ]; - in-out property <[string]> available_mode_names: [ - @tr("Basic aura mode" => "Static"), - @tr("Basic aura mode" => "Breathe"), - @tr("Basic aura mode" => "Strobe"), - ]; - in-out property current_available_mode: 0; - in-out property <[int]> supported_basic_modes: [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12]; - in-out property led_mode; - callback set_led_mode(int); - in-out property <[string]> zone_names: [ - @tr("Aura zone" => "None"), - @tr("Aura zone" => "Key1"), - @tr("Aura zone" => "Key2"), - @tr("Aura zone" => "Key3"), - @tr("Aura zone" => "Key4"), - @tr("Aura zone" => "Logo"), - @tr("Aura zone" => "Lightbar Left"), - @tr("Aura zone" => "Lightbar Right"), - ]; - in-out property zone; - in-out property <[string]> direction_names: [ - @tr("Aura direction" => "Right"), - @tr("Aura direction" => "Left"), - @tr("Aura direction" => "Up"), - @tr("Aura direction" => "Down"), - ]; - in-out property direction; - in-out property <[string]> speed_names: [ - @tr("Aura speed" => "Low"), - @tr("Aura speed" => "Medium"), - @tr("Aura speed" => "High"), - ]; - in-out property speed; - in-out property led_mode_data: { - mode: 0, - zone: 0, - colour1: Colors.aquamarine, - colourbox1: Colors.aquamarine, - colour2: Colors.hotpink, - colourbox2: Colors.hotpink, - speed: 0, - direction: 0, - }; - callback set_led_mode_data(AuraEffect); - in-out property color1; - in-out property colorbox1; - in-out property color2; - in-out property colorbox2; - callback update_led_mode_data(AuraEffect); - update_led_mode_data(data) => { - led_mode_data = data; - current_available_mode = data.mode; - zone = data.zone; - speed = data.speed; - direction = data.direction; - color1 = data.colour1; - color2 = data.colour2; - colorbox1 = data.colour1; - colorbox2 = data.colour2; - } - callback set_hex_from_colour(color) -> string; - callback set_hex_to_colour(string) -> color; -} - -export component PageAura inherits VerticalLayout { - padding: 10px; - spacing: 10px; - alignment: LayoutAlignment.start; callback external_colour_change(); external_colour_change() => { c1.colourbox = AuraPageData.led_mode_data.colour1; c1.final_colour = AuraPageData.led_mode_data.colour1; c1.external_colour_change(); - c2.colourbox = AuraPageData.led_mode_data.colour2; c2.final_colour = AuraPageData.led_mode_data.colour2; c2.external_colour_change(); } - - HorizontalLayout { + VerticalLayout { + padding: 10px; spacing: 10px; - SystemDropdown { - text: @tr("Brightness"); - current_index <=> AuraPageData.brightness; - current_value: AuraPageData.brightness_names[self.current-index]; - model <=> AuraPageData.brightness_names; - selected => { - AuraPageData.set_brightness(AuraPageData.brightness) - } - } + alignment: LayoutAlignment.start; - SystemDropdown { - width: parent.width * 1px / 2px; - text: @tr("Aura mode"); - current_index <=> AuraPageData.current_available_mode; - current_value: AuraPageData.available_mode_names[self.current-index]; - model <=> AuraPageData.available_mode_names; - selected => { - AuraPageData.led_mode_data.mode = AuraPageData.current_available_mode; - self.current_value = AuraPageData.available_mode_names[self.current-index]; - AuraPageData.set_led_mode(AuraPageData.current_available_mode); - } - } - } - - RogItem { HorizontalLayout { spacing: 10px; - VerticalBox { - Text { - text: @tr("Colour 1"); - vertical-alignment: TextVerticalAlignment.center; - horizontal-alignment: TextHorizontalAlignment.center; + SystemDropdown { + text: @tr("Brightness"); + current_index <=> AuraPageData.brightness; + current_value: AuraPageData.brightness_names[self.current-index]; + model <=> AuraPageData.brightness_names; + selected => { + AuraPageData.set_brightness(AuraPageData.brightness) } + } - HorizontalBox { - c1:= ColourSlider { - final_colour <=> AuraPageData.color1; + SystemDropdown { + width: parent.width * 1px / 2px; + text: @tr("Aura mode"); + current_index <=> AuraPageData.current_available_mode; + current_value: AuraPageData.available_mode_names[self.current-index]; + model <=> AuraPageData.available_mode_names; + selected => { + AuraPageData.led_mode_data.mode = AuraPageData.current_available_mode; + self.current_value = AuraPageData.available_mode_names[self.current-index]; + AuraPageData.set_led_mode(AuraPageData.current_available_mode); + } + } + } + + RogItem { + HorizontalLayout { + spacing: 10px; + VerticalBox { + Text { + text: @tr("Colour 1"); + vertical-alignment: TextVerticalAlignment.center; + horizontal-alignment: TextHorizontalAlignment.center; + } + + HorizontalBox { + c1 := ColourSlider { + final_colour <=> AuraPageData.color1; colourbox <=> AuraPageData.colorbox1; set_hex_from_colour(c1) => { - return AuraPageData.set_hex_from_colour(c1); - } - hex_to_colour(s) => { - return AuraPageData.set_hex_to_colour(s); + return AuraPageData.set_hex_from_colour(c1); + } + hex_to_colour(s) => { + return AuraPageData.set_hex_to_colour(s); + } } } } - } - VerticalBox { - Text { - text: @tr("Colour 2"); - vertical-alignment: TextVerticalAlignment.center; - horizontal-alignment: TextHorizontalAlignment.center; - } + VerticalBox { + Text { + text: @tr("Colour 2"); + vertical-alignment: TextVerticalAlignment.center; + horizontal-alignment: TextHorizontalAlignment.center; + } - HorizontalBox { - c2:= ColourSlider { - final_colour <=> AuraPageData.color2; + HorizontalBox { + c2 := ColourSlider { + final_colour <=> AuraPageData.color2; colourbox <=> AuraPageData.colorbox2; set_hex_from_colour(c1) => { - return AuraPageData.set_hex_from_colour(c1); - } - hex_to_colour(s) => { - return AuraPageData.set_hex_to_colour(s); + return AuraPageData.set_hex_from_colour(c1); + } + hex_to_colour(s) => { + return AuraPageData.set_hex_to_colour(s); + } } } } } } - } - HorizontalLayout { - spacing: 10px; - RogItem { - padding: 0px; - VerticalBox { - Text { - text: @tr("Zone"); - vertical-alignment: TextVerticalAlignment.center; - horizontal-alignment: TextHorizontalAlignment.center; - } + HorizontalLayout { + spacing: 10px; + RogItem { + padding: 0px; + VerticalBox { + Text { + text: @tr("Zone"); + vertical-alignment: TextVerticalAlignment.center; + horizontal-alignment: TextHorizontalAlignment.center; + } - ComboBox { - current_index <=> AuraPageData.zone; + ComboBox { + current_index <=> AuraPageData.zone; current_value: AuraPageData.zone_names[self.current-index]; - model <=> AuraPageData.zone_names; + model <=> AuraPageData.zone_names; selected => { - AuraPageData.led_mode_data.zone = self.current-index; + AuraPageData.led_mode_data.zone = self.current-index; + } } } } - } - RogItem { - padding: 0px; - VerticalBox { - Text { - text: @tr("Direction"); - vertical-alignment: TextVerticalAlignment.center; - horizontal-alignment: TextHorizontalAlignment.center; - } + RogItem { + padding: 0px; + VerticalBox { + Text { + text: @tr("Direction"); + vertical-alignment: TextVerticalAlignment.center; + horizontal-alignment: TextHorizontalAlignment.center; + } - ComboBox { - current_index <=> AuraPageData.direction; + ComboBox { + current_index <=> AuraPageData.direction; current_value: AuraPageData.direction_names[self.current-index]; - model <=> AuraPageData.direction_names; + model <=> AuraPageData.direction_names; selected => { - AuraPageData.led_mode_data.direction = self.current-index; + AuraPageData.led_mode_data.direction = self.current-index; + } + } + } + } + + RogItem { + padding: 0px; + VerticalBox { + Text { + text: @tr("Speed"); + vertical-alignment: TextVerticalAlignment.center; + horizontal-alignment: TextHorizontalAlignment.center; + } + + ComboBox { + current_index <=> AuraPageData.speed; + current_value: AuraPageData.speed_names[self.current-index]; + model <=> AuraPageData.speed_names; + selected => { + AuraPageData.led_mode_data.speed = self.current-index; + } } } } } - RogItem { - padding: 0px; - VerticalBox { - Text { - text: @tr("Speed"); - vertical-alignment: TextVerticalAlignment.center; - horizontal-alignment: TextHorizontalAlignment.center; + HorizontalBox { + Button { + text: @tr("Power Settings"); + clicked => { + root.show_fade_cover = true; + root.show_aura_power = true; + debug(AuraPageData.led_power); + debug(AuraPageData.supported_power_zones); } + } - ComboBox { - current_index <=> AuraPageData.speed; - current_value: AuraPageData.speed_names[self.current-index]; - model <=> AuraPageData.speed_names; - selected => { - AuraPageData.led_mode_data.speed = self.current-index; - } + Button { + text: @tr("Apply Aura"); + clicked => { + AuraPageData.led_mode_data.mode = AuraPageData.led_mode; + AuraPageData.led_mode_data.colour1 = AuraPageData.color1; + AuraPageData.led_mode_data.colour2 = AuraPageData.color2; + AuraPageData.set_led_mode_data(AuraPageData.led_mode_data); } } } } - Button { - text: @tr("Apply"); - clicked => { - AuraPageData.led_mode_data.mode = AuraPageData.led_mode; - AuraPageData.led_mode_data.colour1 = AuraPageData.color1; - AuraPageData.led_mode_data.colour2 = AuraPageData.color2; - AuraPageData.set_led_mode_data(AuraPageData.led_mode_data); + if root.show_fade_cover: Rectangle { + width: 100%; + height: 100%; + background: Theme.background-color; + opacity: 0.8; + TouchArea { + height: 100%; + width: 100%; + } + } + + if root.show_aura_power && AuraPageData.aura_type == AuraDevType.New: Rectangle { + width: 100%; + height: 100%; + opacity: 1; + ScrollView { + VerticalLayout { + padding: 30px; + padding-top: 10px; + spacing: 10px; + for power in AuraPageData.supported_power_zones: gr:= HorizontalLayout { + if power == PowerZones.Keyboard: zone1:= AuraPowerGroup { + title: @tr("Keyboard"); + boot_checked: AuraPageData.led_power.rog.keyboard.boot; + boot_toggled => { + AuraPageData.led_power.rog.keyboard.boot = zone1.boot_checked; + AuraPageData.set_led_power(AuraPageData.led_power); + } + awake_checked: AuraPageData.led_power.rog.keyboard.awake; + awake_toggled => { + AuraPageData.led_power.rog.keyboard.awake = zone1.awake_checked; + AuraPageData.set_led_power(AuraPageData.led_power); + } + sleep_checked: AuraPageData.led_power.rog.keyboard.sleep; + sleep_toggled => { + AuraPageData.led_power.rog.keyboard.sleep = zone1.sleep_checked; + AuraPageData.set_led_power(AuraPageData.led_power); + } + shutdown_checked: AuraPageData.led_power.rog.keyboard.shutdown; + shutdown_toggled => { + AuraPageData.led_power.rog.keyboard.shutdown = zone1.shutdown_checked; + AuraPageData.set_led_power(AuraPageData.led_power); + } + } + if power == PowerZones.Logo: zone2:= AuraPowerGroup { + title: @tr("Lid Logo"); + boot_checked: AuraPageData.led_power.rog.logo.boot; + boot_toggled => { + AuraPageData.led_power.rog.logo.boot = zone2.boot_checked; + AuraPageData.set_led_power(AuraPageData.led_power); + } + awake_checked: AuraPageData.led_power.rog.logo.awake; + awake_toggled => { + AuraPageData.led_power.rog.logo.awake = zone2.awake_checked; + AuraPageData.set_led_power(AuraPageData.led_power); + } + sleep_checked: AuraPageData.led_power.rog.logo.sleep; + sleep_toggled => { + AuraPageData.led_power.rog.logo.sleep = zone2.sleep_checked; + AuraPageData.set_led_power(AuraPageData.led_power); + } + shutdown_checked: AuraPageData.led_power.rog.logo.shutdown; + shutdown_toggled => { + AuraPageData.led_power.rog.logo.shutdown = zone2.shutdown_checked; + AuraPageData.set_led_power(AuraPageData.led_power); + } + } + if power == PowerZones.Lightbar: zone3:= AuraPowerGroup { + title: @tr("Lightbar"); + boot_checked: AuraPageData.led_power.rog.lightbar.boot; + boot_toggled => { + AuraPageData.led_power.rog.lightbar.boot = zone3.boot_checked; + AuraPageData.set_led_power(AuraPageData.led_power); + } + awake_checked: AuraPageData.led_power.rog.lightbar.awake; + awake_toggled => { + AuraPageData.led_power.rog.lightbar.awake = zone3.awake_checked; + AuraPageData.set_led_power(AuraPageData.led_power); + } + sleep_checked: AuraPageData.led_power.rog.lightbar.sleep; + sleep_toggled => { + AuraPageData.led_power.rog.lightbar.sleep = zone3.sleep_checked; + AuraPageData.set_led_power(AuraPageData.led_power); + } + shutdown_checked: AuraPageData.led_power.rog.lightbar.shutdown; + shutdown_toggled => { + AuraPageData.led_power.rog.lightbar.shutdown = zone3.shutdown_checked; + AuraPageData.set_led_power(AuraPageData.led_power); + } + } + if power == PowerZones.Lid: zone4:= AuraPowerGroup { + title: @tr("Lid Zone"); + boot_checked: AuraPageData.led_power.rog.lid.boot; + boot_toggled => { + AuraPageData.led_power.rog.lid.boot = zone4.boot_checked; + AuraPageData.set_led_power(AuraPageData.led_power); + } + awake_checked: AuraPageData.led_power.rog.lid.awake; + awake_toggled => { + AuraPageData.led_power.rog.lid.awake = zone4.awake_checked; + AuraPageData.set_led_power(AuraPageData.led_power); + } + sleep_checked: AuraPageData.led_power.rog.lid.sleep; + sleep_toggled => { + AuraPageData.led_power.rog.lid.sleep = zone4.sleep_checked; + AuraPageData.set_led_power(AuraPageData.led_power); + } + shutdown_checked: AuraPageData.led_power.rog.lid.shutdown; + shutdown_toggled => { + AuraPageData.led_power.rog.lid.shutdown = zone4.shutdown_checked; + AuraPageData.set_led_power(AuraPageData.led_power); + } + } + if power == PowerZones.RearGlow: zone5:= AuraPowerGroup { + title: @tr("Rear Glow"); + boot_checked: AuraPageData.led_power.rog.rear-glow.boot; + boot_toggled => { + AuraPageData.led_power.rog.rear-glow.boot = zone5.boot_checked; + AuraPageData.set_led_power(AuraPageData.led_power); + } + awake_checked: AuraPageData.led_power.rog.rear-glow.awake; + awake_toggled => { + AuraPageData.led_power.rog.rear-glow.awake = zone5.awake_checked; + AuraPageData.set_led_power(AuraPageData.led_power); + } + sleep_checked: AuraPageData.led_power.rog.rear-glow.sleep; + sleep_toggled => { + AuraPageData.led_power.rog.rear-glow.sleep = zone5.sleep_checked; + AuraPageData.set_led_power(AuraPageData.led_power); + } + shutdown_checked: AuraPageData.led_power.rog.rear-glow.shutdown; + shutdown_toggled => { + AuraPageData.led_power.rog.rear-glow.shutdown = zone5.shutdown_checked; + AuraPageData.set_led_power(AuraPageData.led_power); + } + } + } + } + } + + Button { + x: root.width - self.width - 6px; + y: 6px; + text: "X"; + height: 40px; + clicked => { + root.show_aura_power = false; + root.show_fade_cover = false; + } + } + } + + if root.show_aura_power && AuraPageData.aura_type == AuraDevType.Old: Rectangle { + width: 100%; + height: 100%; + opacity: 1; + ScrollView { + VerticalLayout { + padding: 30px; + padding-top: 10px; + spacing: 10px; + Rectangle { + border-radius: 20px; + background: Theme.window-background; + VerticalBox { + spacing: 10px; + alignment: LayoutAlignment.start; + Text { + font-size: 18px; + color: Theme.text-foreground-color; + horizontal-alignment: TextHorizontalAlignment.center; + text: @tr("Keyboard"); + } + + HorizontalBox { + SystemToggleVert { + max-height: 42px; + text: @tr("Boot"); + } + + SystemToggleVert { + max-height: 42px; + text: @tr("Awake"); + } + + SystemToggleVert { + max-height: 42px; + text: @tr("Sleep"); + } + + SystemToggleVert { + max-height: 42px; + text: @tr("Shutdown"); + } + } + } + } + } + } + + Button { + x: root.width - self.width - 6px; + y: 6px; + text: "X"; + height: 40px; + clicked => { + root.show_aura_power = false; + root.show_fade_cover = false; + } + } + } + + if root.show_aura_power && AuraPageData.aura_type == AuraDevType.Tuf: Rectangle { + width: 100%; + height: 100%; + opacity: 1; + ScrollView { + VerticalLayout { + padding: 30px; + padding-top: 10px; + spacing: 10px; + Rectangle { + border-radius: 20px; + background: Theme.window-background; + VerticalBox { + spacing: 10px; + alignment: LayoutAlignment.start; + Text { + font-size: 18px; + color: Theme.text-foreground-color; + horizontal-alignment: TextHorizontalAlignment.center; + text: @tr("Keyboard"); + } + + HorizontalBox { + SystemToggleVert { + max-height: 42px; + text: @tr("Boot"); + } + + SystemToggleVert { + max-height: 42px; + text: @tr("Awake"); + } + + SystemToggleVert { + max-height: 42px; + text: @tr("Sleep"); + } + + SystemToggleVert { + max-height: 42px; + text: @tr("Shutdown"); + } + } + } + } + } + } + + Button { + x: root.width - self.width - 6px; + y: 6px; + text: "X"; + height: 40px; + clicked => { + root.show_aura_power = false; + root.show_fade_cover = false; + } } } } diff --git a/rog-control-center/ui/pages/system.slint b/rog-control-center/ui/pages/system.slint index b74772c4..c3a8fbf0 100644 --- a/rog-control-center/ui/pages/system.slint +++ b/rog-control-center/ui/pages/system.slint @@ -1,4 +1,4 @@ -import { SystemSlider, SystemDropdown, SystemToggle } from "../common_widgets.slint"; +import { SystemSlider, SystemDropdown, SystemToggle } from "../widgets/common.slint"; import { Theme } from "../globals.slint"; import { HorizontalBox , VerticalBox, ScrollView, Slider, Button, Switch, ComboBox, GroupBox} from "std-widgets.slint"; diff --git a/rog-control-center/ui/types/aura_types.slint b/rog-control-center/ui/types/aura_types.slint new file mode 100644 index 00000000..538a3cba --- /dev/null +++ b/rog-control-center/ui/types/aura_types.slint @@ -0,0 +1,158 @@ +export enum AuraDevType { + Tuf, + Old, + New, +} + +export struct AuraEffect { + /// The effect type + mode: int, + /// `AuraZone::None` for no zone or zoneless keyboards + zone: int, + /// Primary colour for all modes + colour1: color, + /// Secondary colour in some modes like Breathing or Stars + colour2: color, + /// One of three speeds for modes that support speed (most that animate) + speed: int, + /// Up, down, left, right. Only Rainbow mode seems to use this + direction: int, +} + +export enum AuraDevTuf { + Boot, + Awake, + Sleep, + Keyboard, +} + +export enum AuraDevRog1 { + Awake, + Keyboard, + Lightbar, + Boot, + Sleep, +} + +export enum PowerZones { + Logo, + Keyboard, + Lightbar, + Lid, + RearGlow, +} + +export struct KbAuraPowerState { + zone: PowerZones, + boot: bool, + awake: bool, + sleep: bool, + shutdown: bool, +} + +export struct AuraPower { + keyboard: KbAuraPowerState, + logo: KbAuraPowerState, + lightbar: KbAuraPowerState, + lid: KbAuraPowerState, + rear_glow: KbAuraPowerState, +} + +export struct AuraPowerDev { + tuf: [AuraDevTuf], + old_rog: [AuraDevRog1], + rog: AuraPower, +} + +export global AuraPageData { + in-out property <[string]> brightness_names: [ + @tr("Aura brightness" => "Off"), + @tr("Aura brightness" => "Low"), + @tr("Aura brightness" => "Med"), + @tr("Aura brightness" => "High"), + ]; + in-out property brightness; + callback set_brightness(int); + in-out property <[string]> mode_names: [ + @tr("Basic aura mode" => "Static"), + @tr("Basic aura mode" => "Breathe"), + @tr("Basic aura mode" => "Strobe"), + @tr("Basic aura mode" => "Rainbow"), + @tr("Basic aura mode" => "Star"), + @tr("Basic aura mode" => "Rain"), + @tr("Basic aura mode" => "Highlight"), + @tr("Basic aura mode" => "Laser"), + @tr("Basic aura mode" => "Ripple"), + @tr("Basic aura mode" => "Nothing"), + @tr("Basic aura mode" => "Pulse"), + @tr("Basic aura mode" => "Comet"), + @tr("Basic aura mode" => "Flash"), + ]; + in-out property <[string]> available_mode_names: [ + @tr("Basic aura mode" => "Static"), + @tr("Basic aura mode" => "Breathe"), + @tr("Basic aura mode" => "Strobe"), + ]; + in-out property current_available_mode: 0; + in-out property <[int]> supported_basic_modes: [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12]; + in-out property led_mode; + callback set_led_mode(int); + in-out property <[string]> zone_names: [ + @tr("Aura zone" => "None"), + @tr("Aura zone" => "Key1"), + @tr("Aura zone" => "Key2"), + @tr("Aura zone" => "Key3"), + @tr("Aura zone" => "Key4"), + @tr("Aura zone" => "Logo"), + @tr("Aura zone" => "Lightbar Left"), + @tr("Aura zone" => "Lightbar Right"), + ]; + in-out property zone; + in-out property <[string]> direction_names: [ + @tr("Aura direction" => "Right"), + @tr("Aura direction" => "Left"), + @tr("Aura direction" => "Up"), + @tr("Aura direction" => "Down"), + ]; + in-out property direction; + in-out property <[string]> speed_names: [ + @tr("Aura speed" => "Low"), + @tr("Aura speed" => "Medium"), + @tr("Aura speed" => "High"), + ]; + in-out property speed; + in-out property led_mode_data: { + mode: 0, + zone: 0, + colour1: Colors.aquamarine, + colourbox1: Colors.aquamarine, + colour2: Colors.hotpink, + colourbox2: Colors.hotpink, + speed: 0, + direction: 0, + }; + callback set_led_mode_data(AuraEffect); + in-out property color1; + in-out property colorbox1; + in-out property color2; + in-out property colorbox2; + callback update_led_mode_data(AuraEffect); + update_led_mode_data(data) => { + led_mode_data = data; + current_available_mode = data.mode; + zone = data.zone; + speed = data.speed; + direction = data.direction; + color1 = data.colour1; + color2 = data.colour2; + colorbox1 = data.colour1; + colorbox2 = data.colour2; + } + callback set_hex_from_colour(color) -> string; + callback set_hex_to_colour(string) -> color; + + in-out property aura_type: AuraDevType.New; + in-out property <[PowerZones]> supported_power_zones: [PowerZones.Keyboard, PowerZones.RearGlow, PowerZones.Lid, PowerZones.Lightbar, PowerZones.Logo]; + in-out property led_power; + callback set_led_power(AuraPowerDev); +} \ No newline at end of file diff --git a/rog-control-center/ui/widgets/aura_power.slint b/rog-control-center/ui/widgets/aura_power.slint new file mode 100644 index 00000000..eb72e047 --- /dev/null +++ b/rog-control-center/ui/widgets/aura_power.slint @@ -0,0 +1,67 @@ +import { VerticalBox, HorizontalBox } from "std-widgets.slint"; +import { SystemToggleVert } from "common.slint"; +import { Theme } from "../globals.slint"; + +export component AuraPowerGroup inherits Rectangle { + border-radius: 20px; + background: Theme.window-background; + + in-out property title; + in-out property boot_checked; + in-out property awake_checked; + in-out property sleep_checked; + in-out property shutdown_checked; + callback boot_toggled(bool); + callback awake_toggled(bool); + callback sleep_toggled(bool); + callback shutdown_toggled(bool); + + VerticalBox { + spacing: 10px; + alignment: LayoutAlignment.start; + Text { + font-size: 18px; + color: Theme.text-foreground-color; + horizontal-alignment: TextHorizontalAlignment.center; + text <=> root.title; + } + + HorizontalBox { + SystemToggleVert { + max-height: 42px; + text: @tr("Boot"); + checked <=> root.boot_checked; + toggled => { + root.boot_toggled(self.checked); + } + } + + SystemToggleVert { + max-height: 42px; + text: @tr("Awake"); + checked <=> root.awake_checked; + toggled => { + root.awake_toggled(self.checked); + } + } + + SystemToggleVert { + max-height: 42px; + text: @tr("Sleep"); + checked <=> root.sleep_checked; + toggled => { + root.sleep_toggled(self.checked); + } + } + + SystemToggleVert { + max-height: 42px; + text: @tr("Shutdown"); + checked <=> root.shutdown_checked; + toggled => { + root.shutdown_toggled(self.checked); + } + } + } + } +} \ No newline at end of file diff --git a/rog-control-center/ui/widgets/colour_picker.slint b/rog-control-center/ui/widgets/colour_picker.slint index b1bdd380..a8cf504d 100644 --- a/rog-control-center/ui/widgets/colour_picker.slint +++ b/rog-control-center/ui/widgets/colour_picker.slint @@ -13,19 +13,43 @@ export component ColourSlider inherits VerticalLayout { in-out property c1value<=> c1.value; in-out property c2value<=> c2.value; property <[color]> base_colours: [ - Colors.rgb( 255, 0, 0), - Colors.rgb( 255, 128, 0), - Colors.rgb( 255, 255, 0), - Colors.rgb( 128, 255, 0), - Colors.rgb( 0, 255, 0), - Colors.rgb( 0, 255, 128), - Colors.rgb( 0, 255, 255), - Colors.rgb( 0, 128, 255), - Colors.rgb( 0, 0, 255), - Colors.rgb( 127, 0, 255), - Colors.rgb( 255, 0, 255), - Colors.rgb( 255, 0, 127), - Colors.rgb( 128, 128, 128) + hsv(0, 1, 1), + hsv(10, 1, 1), + hsv(20, 1, 1), + hsv(30, 1, 1), + hsv(40, 1, 1), + hsv(50, 1, 1), + hsv(60, 1, 1), + hsv(70, 1, 1), + hsv(80, 1, 1), + hsv(90, 1, 1), + hsv(100, 1, 1), + hsv(110, 1, 1), + hsv(120, 1, 1), + hsv(130, 1, 1), + hsv(140, 1, 1), + hsv(150, 1, 1), + hsv(160, 1, 1), + hsv(170, 1, 1), + hsv(180, 1, 1), + hsv(190, 1, 1), + hsv(200, 1, 1), + hsv(210, 1, 1), + hsv(220, 1, 1), + hsv(230, 1, 1), + hsv(240, 1, 1), + hsv(250, 1, 1), + hsv(260, 1, 1), + hsv(270, 1, 1), + hsv(280, 1, 1), + hsv(290, 1, 1), + hsv(300, 1, 1), + hsv(310, 1, 1), + hsv(320, 1, 1), + hsv(330, 1, 1), + hsv(340, 1, 1), + hsv(350, 1, 1), + hsv(360, 1, 1), ]; property <[color]> base_shade: [ blend_lightness(base_colour, 1.0), @@ -42,15 +66,13 @@ export component ColourSlider inherits VerticalLayout { ]; function blend_lightness(c1: color, f: float) -> color { - rgb(c1.red() * f, c1.green() * f, c1.blue() * f) - } - + rgb(c1.red * f, c1.green * f, c1.blue * f) + } function set_base_colour() { - root.base_colour = base_colours[c1.value].linear-blend(base_colours[c1.value + 1], c1.value - Math.floor(c1.value)); + root.base_colour = base_colours[c1.value].interpolate(base_colours[c1.value + 1], c1.value - Math.floor(c1.value)); root.final_colour = blend_lightness(base_colour, ((base_shade.length - c2.value) / base_shade.length)); root.colourbox = root.final_colour; - } - callback external_colour_change(); + }callback external_colour_change(); external_colour_change => { if (root.final_colour.hue() < 0) { c1.value = (root.base_colours.length - 1) * ((root.final_colour.hue() + 360) / 360); @@ -64,14 +86,15 @@ export component ColourSlider inherits VerticalLayout { Rectangle { height: 32px; // 13 colours - background: @linear-gradient(90deg, base_colours[0], base_colours[1], base_colours[2], base_colours[3], base_colours[4], base_colours[5], base_colours[6], base_colours[7], base_colours[8], base_colours[9], base_colours[10], base_colours[11], base_colours[12]); + background: @linear-gradient(90deg, base_colours[0], base_colours[1], base_colours[2], base_colours[3], base_colours[4], base_colours[5], base_colours[6], base_colours[7], base_colours[8], base_colours[9], base_colours[10], base_colours[11], base_colours[12], base_colours[13], base_colours[14], base_colours[15], base_colours[16], base_colours[17], base_colours[18], base_colours[19], base_colours[20], base_colours[21], base_colours[22], base_colours[23], base_colours[24], base_colours[25], base_colours[26], base_colours[27], base_colours[28], base_colours[29], base_colours[30], base_colours[31], base_colours[32], base_colours[33], base_colours[34], base_colours[35]); clip: true; border-radius: 6px; c1 := Slider { width: parent.width; height: parent.height; minimum: 0; - maximum: root.base_colours.length - 1; // One less than the array length + maximum: root.base_colours.length - 1; + // One less than the array length changed => { set_base_colour(); hex = set_hex_from_colour(final_colour); @@ -110,7 +133,6 @@ export component ColourSlider inherits VerticalLayout { Rectangle { width: self.height; background <=> root.colourbox; - } } } diff --git a/rog-control-center/ui/common_widgets.slint b/rog-control-center/ui/widgets/common.slint similarity index 87% rename from rog-control-center/ui/common_widgets.slint rename to rog-control-center/ui/widgets/common.slint index 34ae7601..7b2fb13e 100644 --- a/rog-control-center/ui/common_widgets.slint +++ b/rog-control-center/ui/widgets/common.slint @@ -1,5 +1,5 @@ import { VerticalBox , StandardButton, Button, HorizontalBox, ComboBox, Switch, Slider} from "std-widgets.slint"; -import { Theme } from "globals.slint"; +import { Theme } from "../globals.slint"; export component RogItem inherits Rectangle { background: Theme.background-color; @@ -76,6 +76,36 @@ export component SystemToggle inherits RogItem { } } +export component SystemToggleVert inherits RogItem { + in property text; + in-out property checked; + callback toggled(bool); + VerticalLayout { + HorizontalBox { + alignment: LayoutAlignment.center; + padding-top: 10px; + Text { + font-size: 16px; + vertical-alignment: TextVerticalAlignment.bottom; + horizontal-alignment: TextHorizontalAlignment.center; + color: Theme.text-foreground-color; + text <=> root.text; + } + } + + HorizontalBox { + alignment: LayoutAlignment.center; + padding: 10px; + Switch { + checked <=> root.checked; + toggled => { + root.toggled(root.checked) + } + } + } + } +} + export component SystemDropdown inherits RogItem { in property text; in-out property current_index; diff --git a/rog-control-center/ui/widgets/sidebar.slint b/rog-control-center/ui/widgets/sidebar.slint index 2f87f754..ac182843 100644 --- a/rog-control-center/ui/widgets/sidebar.slint +++ b/rog-control-center/ui/widgets/sidebar.slint @@ -4,11 +4,13 @@ import { StyleMetrics } from "std-widgets.slint"; component SideBarItem inherits Rectangle { + padding: 10px; in property selected; in property has-focus; in-out property text<=> label.text; callback clicked<=>touch.clicked; - min-height: self.visible ? l.preferred-height : 0px; + min-height: self.visible ? l.preferred-height + 10px : 0px; + // min-width: self.visible ? l.preferred-width + 10px : 0px; states [ pressed when touch.pressed: { state.opacity: 0.8; @@ -30,6 +32,7 @@ component SideBarItem inherits Rectangle { background: StyleMetrics.window-background; animate opacity { duration: 150ms; } animate border-width { duration: 150ms; } + height: l.preferred-height; } l := HorizontalLayout { @@ -102,7 +105,7 @@ export component SideBar inherits Rectangle { } navigation := VerticalLayout { - spacing: 10px; + // spacing: 10px; alignment: start; vertical-stretch: 0; for item[index] in root.model: SideBarItem { diff --git a/rog-dbus/src/zbus_aura.rs b/rog-dbus/src/zbus_aura.rs index 7213f42d..fc011a96 100644 --- a/rog-dbus/src/zbus_aura.rs +++ b/rog-dbus/src/zbus_aura.rs @@ -69,7 +69,7 @@ trait Aura { #[zbus(property)] fn led_power(&self) -> zbus::Result; #[zbus(property)] - fn set_led_power(&self, value: (AuraPowerDev, bool)) -> zbus::Result<()>; + fn set_led_power(&self, value: AuraPowerDev) -> zbus::Result<()>; /// SupportedBrightness property #[zbus(property)]