use serde::{Deserialize, Serialize};
use serde_repr::{Deserialize_repr, Serialize_repr};
use super::{Color, OverlayEffect};
#[derive(Debug, Serialize_repr, Deserialize_repr, PartialEq)]
#[repr(u8)]
pub enum TransitionEffect {
Random = 0,
Slide = 1,
Dim = 2,
Zoom = 3,
Rotate = 4,
Pixelate = 5,
Curtain = 6,
Ripple = 7,
Blink = 8,
Reload = 9,
Fade = 10,
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct Settings {
#[serde(rename = "ATIME", skip_serializing_if = "Option::is_none")]
pub app_display_time: Option<u16>,
#[serde(rename = "TEFF", skip_serializing_if = "Option::is_none")]
pub transition_effect: Option<TransitionEffect>,
#[serde(rename = "TSPEED", skip_serializing_if = "Option::is_none")]
pub transition_time_ms: Option<u16>,
#[serde(rename = "TCOL", skip_serializing_if = "Option::is_none")]
pub text_color: Option<Color>,
#[serde(rename = "TMODE", skip_serializing_if = "Option::is_none")]
pub time_mode: Option<u8>,
#[serde(rename = "CHCOL", skip_serializing_if = "Option::is_none")]
pub calendar_header_color: Option<Color>,
#[serde(rename = "CBCOL", skip_serializing_if = "Option::is_none")]
pub calendar_body_color: Option<Color>,
#[serde(rename = "CTCOL", skip_serializing_if = "Option::is_none")]
pub calendar_text_color: Option<Color>,
#[serde(rename = "WD", skip_serializing_if = "Option::is_none")]
pub weekday_display: Option<bool>,
#[serde(rename = "WDCA", skip_serializing_if = "Option::is_none")]
pub weekday_color_active: Option<Color>,
#[serde(rename = "WDCI", skip_serializing_if = "Option::is_none")]
pub weekday_color_inactive: Option<Color>,
#[serde(rename = "BRI", skip_serializing_if = "Option::is_none")]
pub brightness: Option<u8>,
#[serde(rename = "ABRI", skip_serializing_if = "Option::is_none")]
pub auto_brightness: Option<bool>,
#[serde(rename = "ATRANS", skip_serializing_if = "Option::is_none")]
pub auto_transition: Option<bool>,
#[serde(rename = "CCORRECTION", skip_serializing_if = "Option::is_none")]
pub color_correction: Option<Vec<u8>>,
#[serde(rename = "CTEMP", skip_serializing_if = "Option::is_none")]
pub color_temperature: Option<Vec<u16>>,
#[serde(rename = "TFORMAT", skip_serializing_if = "Option::is_none")]
pub time_format: Option<String>,
#[serde(rename = "DFORMAT", skip_serializing_if = "Option::is_none")]
pub date_format: Option<String>,
#[serde(rename = "SOM", skip_serializing_if = "Option::is_none")]
pub start_of_week_monday: Option<bool>,
#[serde(rename = "BLOCKN", skip_serializing_if = "Option::is_none")]
pub block_navigation: Option<bool>,
#[serde(rename = "UPPERCASE", skip_serializing_if = "Option::is_none")]
pub uppercase: Option<bool>,
#[serde(rename = "TIME_COL", skip_serializing_if = "Option::is_none")]
pub time_color: Option<Color>,
#[serde(rename = "DATE_COL", skip_serializing_if = "Option::is_none")]
pub date_color: Option<Color>,
#[serde(rename = "TEMP_COL", skip_serializing_if = "Option::is_none")]
pub temperature_color: Option<Color>,
#[serde(rename = "HUM_COL", skip_serializing_if = "Option::is_none")]
pub humidity_color: Option<Color>,
#[serde(rename = "BAT_COL", skip_serializing_if = "Option::is_none")]
pub battery_color: Option<Color>,
#[serde(rename = "SSPEED", skip_serializing_if = "Option::is_none")]
pub scroll_speed: Option<u8>,
#[serde(rename = "TIM", skip_serializing_if = "Option::is_none")]
pub native_time: Option<bool>,
#[serde(rename = "DAT", skip_serializing_if = "Option::is_none")]
pub native_date: Option<bool>,
#[serde(rename = "HUM", skip_serializing_if = "Option::is_none")]
pub native_humidity: Option<bool>,
#[serde(rename = "TEMP", skip_serializing_if = "Option::is_none")]
pub native_temperature: Option<bool>,
#[serde(rename = "BAT", skip_serializing_if = "Option::is_none")]
pub native_battery: Option<bool>,
#[serde(rename = "MATP", skip_serializing_if = "Option::is_none")]
pub matrix_power: Option<bool>,
#[serde(rename = "VOL", skip_serializing_if = "Option::is_none")]
pub volume: Option<u8>,
#[serde(rename = "OVERLAY", skip_serializing_if = "Option::is_none")]
pub overlay: Option<OverlayEffect>,
}