use std::collections::HashMap;
use std::fs;
use std::path::PathBuf;
use serde::Deserialize;
#[derive(Deserialize)]
pub struct UiConfig {
pub bar_color: Option<String>,
}
#[derive(Deserialize)]
pub struct Config {
pub ui: Option<UiConfig>,
pub radios: HashMap<String, String>,
}
impl Config {
pub fn load() -> Result<Self, Box<dyn std::error::Error>> {
let path = Self::config_path();
let content = fs::read_to_string(&path)
.map_err(|e| format!("Failed to read {}: {e}", path.display()))?;
let config: Config = toml::from_str(&content)?;
Ok(config)
}
fn config_path() -> PathBuf {
dirs::config_dir()
.expect("Could not determine config directory")
.join("zik")
.join("config.toml")
}
pub fn sorted_names(&self) -> Vec<String> {
let mut names: Vec<String> = self.radios.keys().cloned().collect();
names.sort();
names
}
}