rcc: instant apply keyboard settings

This commit is contained in:
Luke D. Jones
2023-06-26 12:28:48 +12:00
parent 970cf9ae59
commit 7b495e7587
4 changed files with 50 additions and 49 deletions

View File

@@ -5,6 +5,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased] ## [Unreleased]
## [v4.7.0-RC1]
### Added ### Added
- Support for FX507Z LED modes - Support for FX507Z LED modes
- Support for GL503V LED modes - Support for GL503V LED modes
@@ -28,6 +29,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Remove notification handle tracking limit, fixes KDE issue with profile notif - Remove notification handle tracking limit, fixes KDE issue with profile notif
- Rename daemon and daemon-user crates to asusd and asusd-user to not be confusing in workspace naming - Rename daemon and daemon-user crates to asusd and asusd-user to not be confusing in workspace naming
- Prevent the multiple notifications from a profile change from occuring (too many functions with side effects!) - Prevent the multiple notifications from a profile change from occuring (too many functions with side effects!)
- Apply keyboard brightness when setting a mode
- Update GL503 led config - Update GL503 led config
### BREAKING ### BREAKING
- All Anime related DBUS methods/notifs are changed - All Anime related DBUS methods/notifs are changed

22
Cargo.lock generated
View File

@@ -175,7 +175,7 @@ checksum = "8868f09ff8cea88b079da74ae569d9b8c62a23c68c746240b704ee6f7525c89c"
[[package]] [[package]]
name = "asusctl" name = "asusctl"
version = "4.6.2" version = "4.7.0-RC1"
dependencies = [ dependencies = [
"asusd", "asusd",
"cargo-husky", "cargo-husky",
@@ -194,7 +194,7 @@ dependencies = [
[[package]] [[package]]
name = "asusd" name = "asusd"
version = "4.6.2" version = "4.7.0-RC1"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"cargo-husky", "cargo-husky",
@@ -218,7 +218,7 @@ dependencies = [
[[package]] [[package]]
name = "asusd-user" name = "asusd-user"
version = "4.6.2" version = "4.7.0-RC1"
dependencies = [ dependencies = [
"cargo-husky", "cargo-husky",
"config-traits", "config-traits",
@@ -728,7 +728,7 @@ dependencies = [
[[package]] [[package]]
name = "config-traits" name = "config-traits"
version = "4.6.2" version = "4.7.0-RC1"
dependencies = [ dependencies = [
"cargo-husky", "cargo-husky",
"log", "log",
@@ -2558,7 +2558,7 @@ checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78"
[[package]] [[package]]
name = "rog-control-center" name = "rog-control-center"
version = "4.6.2" version = "4.7.0-RC1"
dependencies = [ dependencies = [
"asusd", "asusd",
"cargo-husky", "cargo-husky",
@@ -2591,7 +2591,7 @@ dependencies = [
[[package]] [[package]]
name = "rog_anime" name = "rog_anime"
version = "4.6.2" version = "4.7.0-RC1"
dependencies = [ dependencies = [
"cargo-husky", "cargo-husky",
"gif", "gif",
@@ -2607,7 +2607,7 @@ dependencies = [
[[package]] [[package]]
name = "rog_aura" name = "rog_aura"
version = "4.6.2" version = "4.7.0-RC1"
dependencies = [ dependencies = [
"cargo-husky", "cargo-husky",
"log", "log",
@@ -2620,7 +2620,7 @@ dependencies = [
[[package]] [[package]]
name = "rog_dbus" name = "rog_dbus"
version = "4.6.2" version = "4.7.0-RC1"
dependencies = [ dependencies = [
"cargo-husky", "cargo-husky",
"rog_anime", "rog_anime",
@@ -2632,7 +2632,7 @@ dependencies = [
[[package]] [[package]]
name = "rog_platform" name = "rog_platform"
version = "4.6.2" version = "4.7.0-RC1"
dependencies = [ dependencies = [
"cargo-husky", "cargo-husky",
"concat-idents", "concat-idents",
@@ -2649,7 +2649,7 @@ dependencies = [
[[package]] [[package]]
name = "rog_profiles" name = "rog_profiles"
version = "4.6.2" version = "4.7.0-RC1"
dependencies = [ dependencies = [
"cargo-husky", "cargo-husky",
"serde", "serde",
@@ -2660,7 +2660,7 @@ dependencies = [
[[package]] [[package]]
name = "rog_simulators" name = "rog_simulators"
version = "4.6.2" version = "4.7.0-RC1"
dependencies = [ dependencies = [
"glam", "glam",
"log", "log",

View File

@@ -3,7 +3,7 @@ members = ["asusctl", "asusd", "asusd-user", "config-traits", "rog-platform", "r
default-members = ["asusctl", "asusd", "asusd-user", "rog-control-center"] default-members = ["asusctl", "asusd", "asusd-user", "rog-control-center"]
[workspace.package] [workspace.package]
version = "4.6.2" version = "4.7.0-RC1"
[workspace.dependencies] [workspace.dependencies]
async-trait = "^0.1" async-trait = "^0.1"

View File

@@ -5,7 +5,7 @@ use egui::{RichText, Ui};
use rog_aura::layouts::KeyLayout; use rog_aura::layouts::KeyLayout;
use rog_aura::{AuraEffect, AuraModeNum, AuraZone, Colour, Speed}; use rog_aura::{AuraEffect, AuraModeNum, AuraZone, Colour, Speed};
use crate::system_state::{AuraState, SystemState}; use crate::system_state::SystemState;
pub fn aura_modes_group(states: &mut SystemState, freq: &mut Arc<AtomicU8>, ui: &mut Ui) { pub fn aura_modes_group(states: &mut SystemState, freq: &mut Arc<AtomicU8>, ui: &mut Ui) {
let mut changed = false; let mut changed = false;
@@ -59,7 +59,7 @@ pub fn aura_modes_group(states: &mut SystemState, freq: &mut Arc<AtomicU8>, ui:
let mut zone_button = |a: AuraZone, ui: &mut Ui| { let mut zone_button = |a: AuraZone, ui: &mut Ui| {
ui.selectable_value(&mut effect.zone, a, format!("{:?}", a)); ui.selectable_value(&mut effect.zone, a, format!("{:?}", a));
}; };
let mut speed_button = |a: Speed, ui: &mut Ui| { let mut speed_button = |a: Speed, ui: &mut Ui| -> bool {
if ui if ui
.selectable_value(&mut effect.speed, a, format!("{:?}", a)) .selectable_value(&mut effect.speed, a, format!("{:?}", a))
.clicked() .clicked()
@@ -70,10 +70,13 @@ pub fn aura_modes_group(states: &mut SystemState, freq: &mut Arc<AtomicU8>, ui:
Speed::High => 10, Speed::High => 10,
}; };
freq.store(val, Ordering::SeqCst); freq.store(val, Ordering::SeqCst);
return true;
} }
false
}; };
let mut dir_button = |a: rog_aura::Direction, ui: &mut Ui| { let mut dir_button = |a: rog_aura::Direction, ui: &mut Ui| -> bool {
ui.selectable_value(&mut effect.direction, a, format!("{:?}", a)); ui.selectable_value(&mut effect.direction, a, format!("{:?}", a))
.clicked()
}; };
let mut c1: [u8; 3] = effect.colour1.into(); let mut c1: [u8; 3] = effect.colour1.into();
@@ -139,26 +142,37 @@ pub fn aura_modes_group(states: &mut SystemState, freq: &mut Arc<AtomicU8>, ui:
}); });
ui.add_enabled_ui(allowed.colour1, |ui| { ui.add_enabled_ui(allowed.colour1, |ui| {
egui::color_picker::color_edit_button_srgb(ui, &mut c1) if egui::color_picker::color_edit_button_srgb(ui, &mut c1).changed() {
changed = true;
}
}); });
ui.add_enabled_ui(allowed.colour2, |ui| { ui.add_enabled_ui(allowed.colour2, |ui| {
egui::color_picker::color_edit_button_srgb(ui, &mut c2) if egui::color_picker::color_edit_button_srgb(ui, &mut c2).changed() {
changed = true;
}
}); });
ui.add_enabled_ui(allowed.speed, |ui| { ui.add_enabled_ui(allowed.speed, |ui| {
ui.horizontal_wrapped(|ui| { ui.horizontal_wrapped(|ui| {
speed_button(Speed::Low, ui); if speed_button(Speed::Low, ui)
speed_button(Speed::Med, ui); || speed_button(Speed::Med, ui)
speed_button(Speed::High, ui); || speed_button(Speed::High, ui)
{
changed = true;
}
}); });
}); });
ui.add_enabled_ui(allowed.direction, |ui| { ui.add_enabled_ui(allowed.direction, |ui| {
ui.horizontal_wrapped(|ui| { ui.horizontal_wrapped(|ui| {
dir_button(rog_aura::Direction::Left, ui); if dir_button(rog_aura::Direction::Left, ui)
dir_button(rog_aura::Direction::Down, ui); || dir_button(rog_aura::Direction::Down, ui)
dir_button(rog_aura::Direction::Right, ui); || dir_button(rog_aura::Direction::Right, ui)
dir_button(rog_aura::Direction::Up, ui); || dir_button(rog_aura::Direction::Up, ui)
{
changed = true;
}
}); });
}); });
}); });
@@ -170,16 +184,16 @@ pub fn aura_modes_group(states: &mut SystemState, freq: &mut Arc<AtomicU8>, ui:
ui.separator(); ui.separator();
ui.with_layout(egui::Layout::right_to_left(egui::Align::TOP), |ui| { ui.with_layout(egui::Layout::right_to_left(egui::Align::TOP), |ui| {
if ui.add(egui::Button::new("Cancel")).clicked() { // if ui.add(egui::Button::new("Cancel")).clicked() {
match AuraState::new(&aura_creation.keyboard_layout, &states.asus_dbus) { // match AuraState::new(&aura_creation.keyboard_layout, &states.asus_dbus) {
Ok(a) => states.aura.modes = a.modes, // Ok(a) => states.aura.modes = a.modes,
Err(e) => states.error = Some(e.to_string()), // Err(e) => states.error = Some(e.to_string()),
} // }
} // }
if ui.add(egui::Button::new("Apply")).clicked() { // if ui.add(egui::Button::new("Apply")).clicked() {
changed = true; // changed = true;
} // }
if aura_creation.layout_testing.is_some() { if aura_creation.layout_testing.is_some() {
if ui.add(egui::Button::new("Next layout")).clicked() { if ui.add(egui::Button::new("Next layout")).clicked() {
@@ -208,21 +222,6 @@ pub fn aura_modes_group(states: &mut SystemState, freq: &mut Arc<AtomicU8>, ui:
} }
}); });
// egui::TopBottomPanel::bottom("error_bar")
// .default_height(26.0)
// .show(ctx, |ui| {
// ui.with_layout(egui::Layout::right_to_left(egui::Align::TOP), |ui| {
// if ui.add(egui::Button::new("Cancel")).clicked() {
// let notif = states.aura.was_notified.clone();
// states.aura.modes = AuraState::new(notif, supported,
// dbus).modes; }
// if ui.add(egui::Button::new("Apply")).clicked() {
// changed = true;
// }
// });
// });
if changed { if changed {
states.aura.current_mode = selected; states.aura.current_mode = selected;