49 lines
1 KiB
Rust
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,
|
|
}
|