use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
#[serde(rename_all = "snake_case")]
pub enum ShaderInstallPrompt {
#[default]
Ask,
Never,
Installed,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
#[serde(rename_all = "snake_case")]
pub enum InstallPromptState {
#[default]
Ask,
Never,
Installed,
}
impl InstallPromptState {
pub fn display_name(&self) -> &'static str {
match self {
Self::Ask => "Ask",
Self::Never => "Never",
Self::Installed => "Installed",
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct IntegrationVersions {
pub shaders_installed_version: Option<String>,
pub shaders_prompted_version: Option<String>,
pub shell_integration_installed_version: Option<String>,
pub shell_integration_prompted_version: Option<String>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
#[serde(rename_all = "snake_case")]
pub enum UpdateCheckFrequency {
Never,
Hourly,
#[default]
Daily,
Weekly,
Monthly,
}
impl UpdateCheckFrequency {
pub fn as_seconds(&self) -> Option<u64> {
match self {
UpdateCheckFrequency::Never => None,
UpdateCheckFrequency::Hourly => Some(3600),
UpdateCheckFrequency::Daily => Some(24 * 60 * 60), UpdateCheckFrequency::Weekly => Some(7 * 24 * 60 * 60), UpdateCheckFrequency::Monthly => Some(30 * 24 * 60 * 60), }
}
pub fn display_name(&self) -> &'static str {
match self {
UpdateCheckFrequency::Never => "Never",
UpdateCheckFrequency::Hourly => "Hourly",
UpdateCheckFrequency::Daily => "Daily",
UpdateCheckFrequency::Weekly => "Weekly",
UpdateCheckFrequency::Monthly => "Monthly",
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
#[serde(rename_all = "lowercase")]
pub enum ProgressBarStyle {
#[default]
Bar,
BarWithText,
}
impl ProgressBarStyle {
pub fn display_name(&self) -> &'static str {
match self {
ProgressBarStyle::Bar => "Bar",
ProgressBarStyle::BarWithText => "Bar with Text",
}
}
pub fn all() -> &'static [ProgressBarStyle] {
&[ProgressBarStyle::Bar, ProgressBarStyle::BarWithText]
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
#[serde(rename_all = "lowercase")]
pub enum ProgressBarPosition {
#[default]
Top,
Bottom,
}
impl ProgressBarPosition {
pub fn display_name(&self) -> &'static str {
match self {
ProgressBarPosition::Bottom => "Bottom",
ProgressBarPosition::Top => "Top",
}
}
pub fn all() -> &'static [ProgressBarPosition] {
&[ProgressBarPosition::Top, ProgressBarPosition::Bottom]
}
}