settings implementation

This commit is contained in:
galister
2026-01-07 02:16:43 +09:00
parent 51dbb6f14d
commit ce558855d4
21 changed files with 561 additions and 351 deletions

View File

@@ -1,57 +1,8 @@
use crate::testbed::{Testbed, TestbedUpdateParams};
use dash_frontend::{
frontend::{self, FrontendUpdateParams},
settings::{self, SettingsIO},
};
use dash_frontend::frontend::{self, FrontendUpdateParams};
use wgui::layout::Layout;
use wlx_common::dash_interface_emulated::DashInterfaceEmulated;
struct SimpleSettingsIO {
settings: settings::Settings,
}
impl SimpleSettingsIO {
fn new() -> Self {
let mut res = Self {
settings: settings::Settings::default(),
};
res.read_from_disk();
res
}
}
// just a simple impl of a config io for dashboard frontend
// use ~/.config later
impl settings::SettingsIO for SimpleSettingsIO {
fn get_mut(&mut self) -> &mut settings::Settings {
&mut self.settings
}
fn get(&self) -> &dash_frontend::settings::Settings {
&self.settings
}
fn save_to_disk(&mut self) {
log::info!("saving settings");
let data = self.settings.save();
std::fs::write("/tmp/testbed_settings.json", data).unwrap();
}
fn read_from_disk(&mut self) {
log::info!("loading settings");
if let Ok(res) = std::fs::read("/tmp/testbed_settings.json") {
let data = String::from_utf8(res).unwrap();
self.settings = settings::Settings::load(&data).unwrap();
}
}
fn mark_as_dirty(&mut self) {
// just save it, at least for now
// save_to_disk should be called later in time or at exit, not instantly
self.save_to_disk();
}
}
pub struct TestbedDashboard {
frontend: frontend::Frontend<()>,
}
@@ -61,10 +12,12 @@ impl TestbedDashboard {
let settings = SimpleSettingsIO::new();
let interface = DashInterfaceEmulated::new();
let frontend = frontend::Frontend::new(frontend::InitParams {
settings: Box::new(settings),
interface: Box::new(interface),
})?;
let frontend = frontend::Frontend::new(
frontend::InitParams {
interface: Box::new(interface),
},
(),
)?;
Ok(Self { frontend })
}
}