vcard_tui 0.1.0

Terminal UI application for managing vCard contacts.
use tui_textarea::TextArea;

use crate::state::selected::{Select, Selected};

#[derive(Clone)]
pub struct VcardAddState<'a> {
    pub selected: Selected<PopupVcardAddSelected>,
    pub textarea: TextArea<'a>,
}

impl<'a> Default for VcardAddState<'a> {
    fn default() -> Self {
        Self {
            selected: Selected::from(PopupVcardAddSelected::TextArea),
            textarea: TextArea::default(),
        }
    }
}

#[derive(Clone, Eq, PartialEq)]
pub enum PopupVcardAddSelected {
    TextArea,
    Create,
}

impl Select for Selected<PopupVcardAddSelected> {
    fn prev(&mut self) {
        self.set(match self.get() {
            PopupVcardAddSelected::TextArea => PopupVcardAddSelected::TextArea,
            PopupVcardAddSelected::Create => PopupVcardAddSelected::TextArea,
        })
    }
    fn next(&mut self) {
        self.set(match self.get() {
            PopupVcardAddSelected::TextArea => PopupVcardAddSelected::Create,
            PopupVcardAddSelected::Create => PopupVcardAddSelected::Create,
        })
    }
}