use serde::Deserialize;
use crate::{config::deserialize_modifier, platform::Modifiers};
#[derive(Clone, Debug, Deserialize)]
#[cfg_attr(test, derive(serde::Serialize))]
pub enum SwipeGestureDirection {
Natural,
Reversed,
}
#[derive(Deserialize, Clone, Debug, Default)]
#[cfg_attr(test, derive(serde::Serialize))]
pub struct SwipeOptions {
pub sensitivity: Option<f64>,
pub deceleration: Option<f64>,
#[allow(dead_code)]
pub continuous: Option<bool>,
pub gesture: Option<GestureOptions>,
pub scroll: Option<ScrollOptions>,
}
#[derive(Deserialize, Clone, Debug, Default)]
#[cfg_attr(test, derive(serde::Serialize))]
pub struct GestureOptions {
pub fingers_count: Option<usize>,
pub direction: Option<SwipeGestureDirection>,
pub vertical: Option<bool>,
}
#[derive(Deserialize, Clone, Debug, Default)]
#[cfg_attr(test, derive(serde::Serialize))]
pub struct ScrollOptions {
pub window_step: Option<bool>,
#[serde(default, deserialize_with = "deserialize_modifier")]
#[cfg_attr(test, serde(serialize_with = "crate::config::serialize_modifier"))]
pub modifier: Option<Modifiers>,
#[serde(default, deserialize_with = "deserialize_modifier")]
#[cfg_attr(test, serde(serialize_with = "crate::config::serialize_modifier"))]
pub vertical_modifier: Option<Modifiers>,
}