deckster/deckster/src/modes/knob/audio_volume.rs
2024-01-09 01:50:25 +01:00

49 lines
1 KiB
Rust

use std::collections::HashMap;
use regex::Regex;
use serde::Deserialize;
use crate::model::knob_page::StyleByStateMap;
#[derive(Debug, Deserialize)]
pub struct Config {
#[serde(with = "serde_regex")]
pub regex: Regex,
#[serde(default)]
pub direction: Direction,
#[serde(default)]
pub disable_press_to_mute: bool,
#[serde(default)]
pub disable_press_to_unmute: bool,
#[serde(default)]
pub muted_turn_action: MutedTurnAction,
#[serde(default)]
pub label: HashMap<State, String>,
#[serde(default)]
pub style: StyleByStateMap<State>,
}
#[derive(Debug, Default, Eq, PartialEq, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum MutedTurnAction {
#[default]
Ignore,
UnmuteAtZero,
UnmuteAndRestore,
}
#[derive(Debug, Default, Eq, PartialEq, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum Direction {
#[default]
Output,
Input,
}
#[derive(Debug, Eq, PartialEq, Hash, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum State {
Inactive,
Active,
Muted,
}