Files
Cagire/src/settings.rs
2026-01-23 01:42:07 +01:00

77 lines
1.5 KiB
Rust

use serde::{Deserialize, Serialize};
const APP_NAME: &str = "cagire";
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct Settings {
pub audio: AudioSettings,
pub display: DisplaySettings,
pub link: LinkSettings,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct AudioSettings {
pub output_device: Option<String>,
pub input_device: Option<String>,
pub channels: u16,
pub buffer_size: u32,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct DisplaySettings {
pub fps: u32,
pub runtime_highlight: bool,
pub show_scope: bool,
pub show_spectrum: bool,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct LinkSettings {
pub enabled: bool,
pub tempo: f64,
pub quantum: f64,
}
impl Default for AudioSettings {
fn default() -> Self {
Self {
output_device: None,
input_device: None,
channels: 2,
buffer_size: 512,
}
}
}
impl Default for DisplaySettings {
fn default() -> Self {
Self {
fps: 60,
runtime_highlight: false,
show_scope: true,
show_spectrum: true,
}
}
}
impl Default for LinkSettings {
fn default() -> Self {
Self {
enabled: true,
tempo: 120.0,
quantum: 4.0,
}
}
}
impl Settings {
pub fn load() -> Self {
confy::load(APP_NAME, None).unwrap_or_default()
}
pub fn save(&self) {
let _ = confy::store(APP_NAME, None, self);
}
}