vcard_tui 0.1.2

Terminal UI application for managing vCard contacts.
use crate::state::selected::{Select, Selected};

#[derive(Clone)]
pub struct ConfirmState {
    pub kind: ConfirmKind,
    pub selected: Selected<ConfirmSelected>,
}

impl Default for ConfirmState {
    fn default() -> Self {
        Self {
            kind: ConfirmKind::Quit,
            selected: Selected::from(ConfirmSelected::Confirm),
        }
    }
}

#[derive(Clone, Eq, PartialEq)]
pub enum ConfirmKind {
    Quit,
    Delete,
}

#[derive(Clone, Eq, PartialEq)]
pub enum ConfirmSelected {
    Cancel,
    Confirm,
}

impl Select for Selected<ConfirmSelected> {
    fn prev(&mut self) {
        self.set(match self.get() {
            ConfirmSelected::Cancel => ConfirmSelected::Cancel,
            ConfirmSelected::Confirm => ConfirmSelected::Cancel,
        })
    }
    fn next(&mut self) {
        self.set(match self.get() {
            ConfirmSelected::Cancel => ConfirmSelected::Confirm,
            ConfirmSelected::Confirm => ConfirmSelected::Confirm,
        })
    }
}