use std::fmt;
use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
pub enum GestureDirection {
Up,
Down,
Left,
Right,
Click,
}
impl GestureDirection {
pub const ALL: [GestureDirection; 5] = [
GestureDirection::Up,
GestureDirection::Down,
GestureDirection::Left,
GestureDirection::Right,
GestureDirection::Click,
];
#[must_use]
pub fn label(self) -> &'static str {
match self {
GestureDirection::Up => "Up",
GestureDirection::Down => "Down",
GestureDirection::Left => "Left",
GestureDirection::Right => "Right",
GestureDirection::Click => "Click",
}
}
#[must_use]
pub fn translation_key(self) -> &'static str {
match self {
GestureDirection::Up => "common.up",
GestureDirection::Down => "common.down",
GestureDirection::Left => "common.left",
GestureDirection::Right => "common.right",
GestureDirection::Click => "common.click",
}
}
}
impl fmt::Display for GestureDirection {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(self.label())
}
}