use serde::{Deserialize, Serialize};
use crate::wire::lossy_bool;
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
pub struct ThemingCapabilities {
#[serde(default)]
pub name: Option<String>,
#[serde(default)]
pub url: Option<String>,
#[serde(default)]
pub slogan: Option<String>,
#[serde(default)]
pub color: Option<String>,
#[serde(default, alias = "color-element", alias = "color_element")]
pub color_element: Option<String>,
#[serde(
default,
alias = "color-element-bright",
alias = "color_element_bright"
)]
pub color_element_bright: Option<String>,
#[serde(default, alias = "color-element-dark", alias = "color_element_dark")]
pub color_element_dark: Option<String>,
#[serde(default, alias = "color-text", alias = "color_text")]
pub color_text: Option<String>,
#[serde(default)]
pub logo: Option<String>,
#[serde(default)]
pub background: Option<String>,
#[serde(
default,
alias = "background-plain",
alias = "background_plain",
deserialize_with = "lossy_bool"
)]
pub background_plain: bool,
#[serde(
default,
alias = "background-default",
alias = "background_default",
deserialize_with = "lossy_bool"
)]
pub background_default: bool,
}
impl ThemingCapabilities {
pub fn name(&self) -> Option<&str> {
self.name.as_deref()
}
pub fn url(&self) -> Option<&str> {
self.url.as_deref()
}
pub fn slogan(&self) -> Option<&str> {
self.slogan.as_deref()
}
pub fn color(&self) -> Option<&str> {
self.color.as_deref()
}
pub fn color_element(&self) -> Option<&str> {
self.color_element.as_deref()
}
pub fn color_element_bright(&self) -> Option<&str> {
self.color_element_bright.as_deref()
}
pub fn color_element_dark(&self) -> Option<&str> {
self.color_element_dark.as_deref()
}
pub fn color_text(&self) -> Option<&str> {
self.color_text.as_deref()
}
pub fn logo(&self) -> Option<&str> {
self.logo.as_deref()
}
pub fn background(&self) -> Option<&str> {
self.background.as_deref()
}
pub const fn is_background_plain(&self) -> bool {
self.background_plain
}
pub const fn is_background_default(&self) -> bool {
self.background_default
}
}